¿Cómo se establece un enlace vim específico en Ipython 5.0.0
linux prompt-toolkit (1)
Tienes razón. prompt_toolkit
ignora .inputrc
. No parece haber una forma de definir combinaciones de teclas personalizadas para el modo vi
en el archivo de configuración de perfil de IPython 5.0.0.
Aquí hay una solución que estoy usando actualmente. No es bonito, pero funciona por ahora.
De acuerdo con los documentos de IPython , puede especificar Atajos de teclado en un script de configuración de inicio.
En lugar de volver a enlazar jk
con ESC
, estoy haciendo un unicode "j" ( u''j''
) seguido de unicode "k" ( u''k''
) dentro de VimInsertMode()
un atajo para un evento prompt_toolkit
que cambia a navegación modo.
.ipython/profile_default/startup/keybindings.py
un .ipython/profile_default/startup/keybindings.py
con el siguiente código:
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)
La fuente prompt_toolkit lo ayudará a implementar otros accesos directos según sea necesario.
Entiendo que debido a que Ipython 5.0.0 usa una nueva biblioteca de entrada (prompt_toolkit), ya no está predeterminado al modo de editor especificado en .inputrc (* nix). Esta opción debe establecerse en un archivo de configuración de perfil de Ipython (consulte https://stackoverflow.com/a/38329940/2915339 ).
Mi pregunta es: al haber configurado vi-mode en el archivo de configuración de perfil, ¿cómo se especifica un enlace de clave en particular? Me gusta usar ''jk'' para escapar, por ejemplo.