标准python解释器有一个vi命令模式?

时间:2009-02-11 16:11:44

标签: python vi

这听起来很无知,但是:

我在python解释器(RHEL 5.3上的python 2.4)上工作了一下,突然发现自己处于“vi命令模式”。也就是说,我可以使用典型的vi键绑定编辑以前的命令,向左移动h,用x ...删除

我喜欢它 - 唯一的问题是,我不知道我是如何到达这里的(也许是通过我导入的其中一个模块:pylab / matplotlib?)。

有人可以解释如何在解释器中启用此模式吗?

4 个答案:

答案 0 :(得分:30)

这一切都取决于一些事情。

首先,python shell使用readline,因此,~/.inputrc在这里很重要。这与psql的PostgreSQL命令行解释器和mysql的MySQL shell是一样的。所有这些都可以配置为使用vi样式的命令绑定,包括历史记录等。

一旦你将编辑模式设置为vi,

<ESC>将使你进入python shell的vi模式

您可能需要~/.inputrc

中的以下定义
set editing-mode vi

OSX信息

OSX使用libedit,它使用〜/ .editrc。您可以 man editrc 获取更多信息。

例如,要模仿在历史记录中搜索的热门组合键,您可以将以下内容添加到.editrc

bind "^R" em-inc-search-prev

答案 1 :(得分:24)

Ctrl-Alt-J在readline programs中从Emacs模式切换到Vi模式。

或者将“set editing-mode vi”添加到〜/ .inputrc

答案 2 :(得分:3)

对于Mac OS X 10.10.3,python2.7,vi模式可以通过放置&#34; bind -v&#34;来配置。在〜/ .editrc中。该手册页的最后几段暗示了这一点。

答案 3 :(得分:2)

使用readline.parse_and_bind方法。例如,尝试使用python交互式控制台:

import readline
readline.parse_and_bind("set editing-mode vi")

您可以在.inputrc中设置任何可以通过此方法设置的命令。我在Python 2.7和3.5.1中尝试过它。

另见man readline