我明白,因为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源将帮助您根据需要实现其他快捷方式。