我在 python 解释器(RHEL 5.3 上的 python 2.4)中工作了一下,突然发现自己处于“vi 命令模式”中。也就是说,我可以用典型的 vi 键绑定编辑以前的命令,用 h 向左,用 x 删除......
我喜欢它——唯一的是,我不知道我是怎么到这里的(也许是通过我导入的模块之一:pylab/matplotlib?)。
谁能阐明如何在解释器中启用此模式?
Ctrl-Alt-J 在readline 程序中从 Emacs 模式切换到 Vi 模式。
或者将“设置编辑模式 vi”添加到您的 ~/.inputrc
这一切都取决于一些事情。
首先,python shell 使用 readline,因此,你~/.inputrc
在这里很重要。这与 PostgreSQL 命令行解释器 psql 和 MySQL shell 相同。所有这些都可以配置为使用 vi 风格的命令绑定,以及历史记录等。
<ESC>
将编辑模式设置为 vi 后,将在 python shell 中将您置于 vi 模式
您可能需要在您的~/.inputrc
set editing-mode vi
OSX 信息
OSX 使用 libedit,它使用 ~/.editrc。您可以man editrc了解更多信息。
例如,要模仿在您的历史记录中搜索的流行组合键,您可以将以下内容添加到您的 .editrc
bind "^R" em-inc-search-prev
对于 Mac OS X 10.10.3、python2.7,可以vi
通过将bind -v
. ~/.editrc
手册页的最后几段暗示了这一点。
使用readline.parse_and_bind方法。例如,在 python 交互式控制台上尝试:
import readline
readline.parse_and_bind("set editing-mode vi")
似乎您可以在 .inputrc 中设置的任何命令也可以通过此方法设置。我在 Python 2.7 和 3.5.1 中尝试过。
也可以看看man readline
编辑 (2019 年 12 月 21 日):或者,要拥有真正的 vim,您可以设法用Athame修补 python 的 readline 。我用 bash 完成了它,它非常酷。