【发布时间】:2012-09-28 04:39:52
【问题描述】:
我有时会在开发 Python 模块时通过在终端中运行 Python 交互式提示、导入我的新模块并测试其功能来测试它们。当然,由于我的代码正在开发中,因此存在错误,并且需要经常重新启动解释器。当我在重新启动之前只执行了几行解释器时,这并不太痛苦:当解释器重新启动时我的键序列看起来像 Up Up Enter Up Up Enter... 但是将其推断为要重复的 5 个或更多语句并且它变得很严重痛!
当然,我可以将我的测试代码放入我使用python -i 执行的脚本中,但这是一个临时活动,以至于打开文本编辑器似乎不太“超过阈值”:) 我是什么我真正渴望的是 bash shell 中的 Ctrl-r 行为:在 bash 中按顺序执行 10 个命令的序列涉及在历史记录中查找命令(重复 Up 或 Ctrl-r 进行搜索——两者都在 Python 中工作解释器shell),然后按Ctrl-o 十次。我最喜欢的 bash shell 功能之一。
问题在于,虽然许多其他 readline 绑定功能(如 Ctrl-a、Ctrl-e、Ctrl-r 和 Ctrl-s)在 Python 解释器中工作,但 Ctrl-o 却不能。我无法在网上找到对此的任何引用,尽管也许readline 模块可用于将此功能添加到python 提示符。有什么建议吗?
编辑:是的,我知道使用交互式解释器并不是一种超出几行代码的开发方法!但它对于小型测试很方便,IMO 的交互性可以帮助判断一个开发的 API 是自然方便还是过于繁重。因此,请限制对 readline history-stepping 是否可以在 python 中工作的技术问题的回答,而不是关于是否应该或不应该选择(有时)以这种方式工作的侧面意见!
编辑: 自从发帖后,我意识到我已经在使用readline 模块来使一些 Python 解释器历史函数工作。但是似乎不支持 Ctrl-o 绑定到 operate-and-get-next readline 命令,即使我将 readline.parse_and_bind("Control-o: operate-and-get-next") 放在我的 PYTHONSTARTUP 文件中。
【问题讨论】:
标签: keyboard-shortcuts python readline