<p>你说得对。<code>prompt_toolkit</code>忽略<code>.inputrc</code>。在ipython5.0.0概要文件配置文件中,似乎没有一种方法为<code>vi</code>模式定义自定义键绑定。在</p>
<p>以下是我当前使用的解决方法。虽然不漂亮,但现在还管用。在</p>
<p>根据<a href="http://ipython.readthedocs.io/en/latest/config/details.html#keyboard-shortcuts" rel="noreferrer">IPython docs</a>,可以在启动配置脚本中指定键盘快捷键。在</p>
<p>我没有将<code>jk</code>重新绑定到<code>ESC</code>,而是在<code>VimInsertMode()</code>内部创建一个unicode“j”(<code>u'j'</code>),后面跟着一个unicode“k”(<code>u'k'</code>),这是切换到导航模式的<code>prompt_toolkit</code>事件的快捷方式。在</p>
<p>我用以下代码创建了一个<code>.ipython/profile_default/startup/keybindings.py</code>:</p>
<pre><code>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)
</code></pre>
<p><a href="https://github.com/jonathanslenders/python-prompt-toolkit/blob/4aa0404ad7e770763b85764fd42c8dbce94f9c62/prompt_toolkit/key_binding/bindings/vi.py" rel="noreferrer">The prompt_toolkit source</a>将根据需要帮助您实现其他快捷方式。在</p>