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 :)
Respuestas:
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:
set editing-mode vi
set keymap vi
set convert-meta on
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 , y set 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:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
ipython
usa la biblioteca readline y esto se puede configurar usando el ~/.inputrc
archivo. Puedes añadir
set editing-mode vi
a ese archivo para hacer que todas las readline
aplicaciones basadas usen combinaciones de teclas estilo vi en lugar de Emacs.
ipython
cambió de readline
a una biblioteca de Python llamada, prompt_toolkit
por 5.0.0
lo que esto ya no funciona.
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 como start.py
. He aquí un ejemplo:
# Initializing script for ipython in ~/.ipython/profile_default/startup/
from IPython import get_ipython
ipython = get_ipython()
# If in ipython, set vi and load autoreload extension
if 'ipython' in globals():
ipython.editing_mode = 'vi'
ipython.magic('load_ext autoreload')
ipython.magic('autoreload 2')
from Myapp.models import *
La última línea es si usa ipython con Django y desea importar todos sus modelos por defecto.