如何在Ipython 5.0.0中设置特定的vim绑定

我明白,因为Ipython 5.0.0使用新的input库(prompt_toolkit),它不再默认为.inputrc(* nix)中指定的编辑器模式。 该选项必须在Ipythonconfiguration文件configuration文件中设置(请参阅https://stackoverflow.com/a/38329940/2915339 )。

我的问题是:在configuration文件configuration文件中设置vi模式,如何指定特定的键绑定? 比如,我喜欢用'jk'来逃避。

你是对的。 prompt_toolkit忽略.inputrc 。 似乎没有办法在IPython 5.0.0配置文件配置文件中为vi模式定义自定义的密钥绑定。

这是我目前使用的解决方法。 这不漂亮,但它现在工作。

根据IPython文档 ,您可以在启动配置脚本中指定键盘快捷键。

而不是重新jk ESC ,我做了一个unicode“j”( u'k' ),后面跟着一个unicode“k”( u'k' )在VimInsertMode()里面的一个prompt_toolkit事件的快捷方式,切换到导航模式。

我用下面的代码创建了一个.ipython/profile_default/startup/keybindings.py

 from IPython import get_ipython from prompt_toolkit.enums import DEFAULT_BUFFER from prompt_toolkit.filters import HasFocus, ViInsertMode from prompt_toolkit.key_binding.vi_state import InputMode ip = get_ipython() def switch_to_navigation_mode(event): vi_state = event.cli.vi_state vi_state.reset(InputMode.NAVIGATION) if getattr(ip, 'pt_cli'): registry = ip.pt_cli.application.key_bindings_registry registry.add_binding(u'j',u'k', filter=(HasFocus(DEFAULT_BUFFER) & ViInsertMode()))(switch_to_navigation_mode) 

prompt_toolkit源将帮助您根据需要实现其他快捷方式。