我正在使用IPython Vi模式,而IPython设置了许多默认键映射here。我做了一项研究here和here,发现我可以使用KeyBindingManager
创建新的密钥绑定。
但是,如果我想创建的绑定存在,那么它就无法工作。例如,我在~/.ipython/profile_default/startup/vikeys.py
中编写了一些代码:
from prompt_toolkit.filters.cli import ViNavigationMode, ViMode
from prompt_toolkit.filters import Always, IsReadOnly
# create `handle`
from IPython import get_ipython
ip = get_ipython()
if getattr(ip, 'pt_cli'):
registry = ip.pt_cli.application.key_bindings_registry
handle = registry.add_binding
navigation_mode = ViNavigationMode() & ViMode() & Always()
@handle('t', filter=navigation_mode)
def _(event):
"""
Go up, but if we enter a new history entry, move to the start of the
line.
"""
event.current_buffer.auto_up(
count=event.arg, go_to_start_of_line_if_history_changes=True)
由于t
已映射here,因此我的绑定不起作用。
我还尝试用下面的代码替换handle
,但没有效果:
# create `handle`
from prompt_toolkit.key_binding.manager import KeyBindingManager
manager = KeyBindingManager.for_prompt()
handle = manager.registry.add_binding
那么,有没有办法替换IPython中现有的键绑定?
答案 0 :(得分:0)