En todo lo que sigue, el ^
indica la posición del cursor.
Estoy usando bash en Terminal en OS X Yosemite y me gustaría usar la edición de línea de estilo vi:
prompt$ set -o vi
^
Por defecto, se inicia en el modo Insertar vi, por lo que puedo escribir inmediatamente
prompt$ hello
^
Ahora digamos que uso la tecla de flecha izquierda ← o H para mover a la izquierda:
prompt$ hello
^
Ahora ya no puedo moverme a la derecha del o
en hello
usando → o L :
prompt$ hello # I can't move here anymore!
^
Si tengo que añadir algo, tengo que pulsar Esc y luego Shift A .
Esto no sucede en el modo emacs ( set -o emacs
) o en ciertas máquinas Linux (ssh'd en SLC 6.6 con bash 4.1, o de forma nativa en el de mi amigo (creo que Arch) con bash 4.3). En todos estos, ← luego → me lleva al final de la línea donde puedo seguir escribiendo; en mi terminal Mac no puedo a menos que salga del modo Insertar.
Esto tampoco sucede con vim en mi Mac; vim me permite avanzar más allá del final de las líneas con las teclas de flecha en el modo Insertar. Es solo el modo readline vi.
Intenté actualizar mi bash (con Homebrew) de 3.2 a 4.3; Eso no lo solucionó.
Intenté quitar mi .bash_profile y usar una Terminal sin modificar; Eso no lo solucionó. (Tengo algunos alias y modificadores de solicitud en mi .bash_profile.)
He leído this , this , y esto . No tienen respuestas.
Gracias de antemano por cualquier consejo!
Editar: En un sistema Linux en el que las cosas funcionan como quisiera, la variable TERM da
prompt$ echo $TERM
xterm-256color
Los contenidos de /etc/inputrc
son
# do not bell on tab-completion
#set bell-style none
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
# Completed names which are symbolic links to
# directories have a slash appended.
set mark-symlinked-directories on
$if mode=emacs
# for linux console and RH/Debian xterm
"\e[1~": beginning-of-line
"\e[4~": end-of-line
# commented out keymappings for pgup/pgdown to reach begin/end of history
#"\e[5~": beginning-of-history
#"\e[6~": end-of-history
"\e[5~": history-search-backward
"\e[6~": history-search-forward
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e[1;5C": forward-word
"\e[1;5D": backward-word
# for rxvt
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word
# for non RH/Debian xterm, can't hurt for RH/DEbian xterm
"\eOH": beginning-of-line
"\eOF": end-of-line
# for freebsd console
"\e[H": beginning-of-line
"\e[F": end-of-line