Quiero cambiar al modo de edición vi en un entorno de línea de lectura. Pero no quiero usar 'set -o vi'. Quiero cambiar temporalmente usando un atajo de teclado. La página del manual dice que puedo hacer esto M-C-j. Pero eso no funciona para mí.
Estoy usando Ubuntu y un xterm. Tampoco funciona bajo gnome-terminal.
ESC E
. Si hace una pausa, pasará del modo vi-insert al modo vi-command, o simplemente cancelará el comando vi actual.Bash inhabilita explícitamente este y algunos otros atajos de Readline. Consulte la
initialize_readline()
función en el código fuente de bash ( http://www.catonmat.net/download/bashline.c ):Parece que no puedo anular este comportamiento usando el archivo de configuración de Readline (.inputrc).
fuente
Esto es lo que terminé usando para mi
~/.inputrc
, basado en la respuesta de slm.Probé la
$if mode=
sintaxis, pero creo que se resuelve estáticamente (una vez, al leer el archivo), por lo que no funciona como esperaba. Por lo tanto, debemos cambiar a cada mapa de teclas y modificar sus asociaciones de teclas, incluso si se configuraron previamente en otros mapas de teclas. Al final digo con qué modo quiero comenzar.fuente
Intenté que las asignaciones con estilo emacs se usaran en modo vi. Terminé con:
Es útil leer la página del manual
readline
y laREADLINE
sección de labash
página del manual.fuente