如何在* nix下的ipython中使用vi密钥?

目前在Bash中,我使用set -o vi在我的bash提示符中启用vi模式。

我如何得到ipython呢?

注意:如果答案适用于所有* nix,我将从标题中删除OS X

如果有人最近在这里徘徊, IPython 5.0从readline切换到prompt_toolkit ,所以对这个问题的更新答案是通过一个选项:

 $ ipython --TerminalInteractiveShell.editing_mode=vi 

…或在configuration文件configuration中全局设置( ~/.ipython/profile_default/ipython_config.py ;使用ipython profile create如果没有的话):

 c.TerminalInteractiveShell.editing_mode = 'vi' 

看起来像一个解决scheme适用于许多其他readline兼容的应用程序:

~/.inputrc文件中设置以下内容:

 set editing-mode vi set keymap vi set convert-meta on 

资料来源: http : //www.jukie.net/bart/blog/20040326082602

您也可以交互式切换Vi模式和Emacs模式。 根据readline文档切换他们之间,你应该能够使用MCj组合键,但似乎只能让我切换到vi模式 – 在我的Mac(其中ESC被用作'Meta'键)它是: ESC + CTRL + j 。 要切换回Emacs模式,可以使用Ce,但这似乎不适用于我 – 我不得不做MCe – 在我的Mac上是: ESC + CTRL + e

仅供参考,我的〜/ .inputrc设置如下:

 set meta-flag on set input-meta on set convert-meta off set output-meta on 

ipython使用readline库,这可以使用~/.inputrc文件进行configuration。 你可以加

 set editing-mode vi 

到该文件,使所有基于readline的应用程序使用vi风格的键绑定而不是Emacs。

我需要能够在IPython 5中以交互方式切换模式,并且我发现您可以通过即时重新创build提示pipe理器来实现:

 a = get_ipython().configurables[0]; a.editing_mode='vi'; a.init_prompt_toolkit_cli()