Actualmente en Bash utilizo set -o vi
para habilitar el modo vi en mi indicador de bash.
¿Cómo hago para que esto funcione en ipython?
Nota: Si una respuesta se aplica a todos * nix, eliminaré OS X del título :)
En caso de que alguien haya entrado aquí recientemente, IPython 5.0 cambió de readline a prompt_toolkit , por lo que una respuesta actualizada a esta pregunta es pasar una opción:
$ ipython --TerminalInteractiveShell.editing_mode=vi
... o para configurarlo globalmente en la configuración del perfil ( ~/.ipython/profile_default/ipython_config.py
; créelo con ipython profile create
si no lo tiene) con:
c.TerminalInteractiveShell.editing_mode = 'vi'
Parece que una solución funciona para muchas otras aplicaciones compatibles con readline:
Establezca lo siguiente en su
~/.inputrc
archivo:Fuente: http://www.jukie.net/bart/blog/20040326082602
fuente
set convert-meta on
. Entra en conflicto con la entrada Unicode, por lo que si pega o escribe Unicode, puede activar varios eventos, lo que puede resultar sorprendente. Por ejemplo, intente escribir ü y verá un resultado interesante.set keymap vi
cambia el mapa de teclas (es decir, el modo) que afectarán los siguientes comandos , yset convert-meta on
cambia el comportamiento de algunas teclas . No estoy seguro de si los necesita.set convert-meta on
(y cualquier cosa debajo de esa línea) solo se aplicará al modo de comando, no al modo de inserción.También puede cambiar de forma interactiva entre el modo Vi y el modo Emacs. De acuerdo con los documentos de readline para cambiar entre ellos, se supone que debe poder 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 Emacs, se puede usar Ce, pero eso no pareció funcionar para mí, tuve que hacer MCe en su lugar, en mi Mac es: ESC+ CTRL+ e.
FYI my ~ / .inputrc se configura de la siguiente manera:
fuente
ipython
usa la biblioteca readline y esto se puede configurar usando el~/.inputrc
archivo. Puedes añadira ese archivo para hacer que todas las
readline
aplicaciones basadas usen combinaciones de teclas estilo vi en lugar de Emacs.fuente
ipython
cambió dereadline
a una biblioteca de Python llamada,prompt_toolkit
por5.0.0
lo que esto ya no funciona.Necesitaba poder cambiar de modo de forma interactiva en IPython 5 y descubrí que puede hacerlo recreando el administrador de mensajes sobre la marcha:
fuente
Puede configurar vi en su archivo de configuración de inicio .ipython. Cree uno si no lo tiene agregando un archivo
~/.ipython/profile_default/startup/
llamado algo comostart.py
. He aquí un ejemplo:La última línea es si usa ipython con Django y desea importar todos sus modelos por defecto.
fuente