Actualmente en Bash utilizo set -o vi
para activar el modo vi en mi indicador bash.¿Cómo uso las teclas vi en ipython bajo * nix?
¿Cómo hago esto en ipython?
Nota: Si una respuesta se aplica a todos los * nix, voy a quitar el OS X del título :)
Actualmente en Bash utilizo set -o vi
para activar el modo vi en mi indicador bash.¿Cómo uso las teclas vi en ipython bajo * nix?
¿Cómo hago esto en ipython?
Nota: Si una respuesta se aplica a todos los * nix, voy a quitar el OS X del título :)
En caso de que alguien está vagando por aquí recientemente, IPython 5.0 switched from readline to prompt_toolkit, por lo que una respuesta actualizada a esta pregunta es para pasar una opción:
$ ipython --TerminalInteractiveShell.editing_mode=vi
... o definirlo globalmente en la configuración de su perfil (~/.ipython/profile_default/ipython_config.py
; crearlo con ipython profile create
si no lo tienes) con:
c.TerminalInteractiveShell.editing_mode = 'vi'
Parece que una solución que funciona para muchas otras aplicaciones compatibles readline:
Set lo siguiente en su archivo ~/.inputrc
:
set editing-mode vi
set keymap vi
set convert-meta on
ser * muy * cuidado con 'set convert-meta de '. Entra en conflicto con la entrada de Unicode, por lo que si pega o escribe unicode, puede desencadenar varios eventos, lo que puede ser sorprendente. Por ejemplo, intente escribir ü, y verá un resultado interesante. – minrk
¿Sabes lo que hacen las dos últimas líneas? Una comprobación rápida muestra que solo la primera línea proporciona combinaciones de teclas vi básicas. Desearía saber si había alguna razón para agregar las otras. – weronika
@weronika Parece que ['set keymap vi' cambia qué mapa de teclas (es decir, modo) afectarán los siguientes comandos] (http://stackoverflow.com/a/10002721/84745), y [' set convert-meta on' cambia el comportamiento de algunas teclas] (http://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html). No estoy seguro si los necesitas. – s4y
ipython
usa la biblioteca readline y esto se puede configurar usando el archivo ~/.inputrc
. Puede añadir
set editing-mode vi
a ese archivo para que todas las aplicaciones basadas en readline
usar vi combinaciones de teclas de estilo en lugar de Emacs.
'ipython' cambió de' readline' a una biblioteca de python llamada 'prompt_toolkit' en' 5.0.0', por lo que ya no funciona. – jellycola
También puede cambiar interactivamente entre el modo Vi-modo y el modo Emacs. De acuerdo con el readline docs para cambiar entre ellos se supone que se puede usar la combinación de teclas MCj pero eso solo parece permitirme cambiar al modo vi - en mi Mac (donde ESC se usa como la tecla 'Meta') es: ESC + CTRL + j. Para volver al modo de Emacs se puede utilizar C-e, pero eso no parece funcionar para mí - que tenía que en lugar hacerlo M-C-e - en mi Mac es: ESC + CTRL + e.
FYI mi ~/.inputrc está configurado de la siguiente manera:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
¡He estado intentando averiguar por qué M-C-j no funcionaba todo este tiempo! – shangxiao
que tenía que ser capaz de cambiar los modos de forma interactiva en IPython 5 y me encontré puede hacerlo al recrear el gerente rápida sobre la marcha:
a = get_ipython().configurables[0]; a.editing_mode='vi'; a.init_prompt_toolkit_cli()
Vine aquí para publicar esta respuesta, gracias por darme una paliza :) –
Gracias. Esto es molestamente difícil de encontrar en cualquier lugar de los documentos para IPython, Jupyter o prompt_toolkit. – jth
¿Dónde puedo agregar mis asignaciones de enlaces de teclas personalizadas? – Aravinda