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íneas estilo vi:
prompt$ set -o vi
^
Por defecto se inicia en modo vi Insertar, por lo que puedo escribir inmediatamente
prompt$ hello
^
Ahora digamos que uso la tecla de flecha izquierda o H para moverse a la izquierda:
prompt$ hello
^
Ahora ya no puedo moverme al derecha de la o
en hello
utilizando o L :
prompt$ hello # I can't move here anymore!
^
Si tengo que añadir algo, tengo que pulsar Esc entonces ShiftA .
Esto no ocurre en el modo emacs ( set -o emacs
) o en ciertas máquinas Linux (ssh'd into SLC 6.6 with bash 4.1, or natively on my friend's (I think Arch) with bash 4.3). En todas ellas, entonces 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 ocurre con vim en mi Mac; vim me permite moverme más allá del final de las líneas con las teclas de flecha en el modo Insertar. Es sólo el modo vi readline.
Intenté actualizar mi bash (con Homebrew) de 3.2 a 4.3; eso no lo arregló.
Intenté eliminar mi .bash_profile y utilizar un Terminal sin modificar; eso no lo solucionó. (Tengo algunos alias y modificadores de prompt en mi .bash_profile).
He leído este , este y este . No tienen respuestas.
Gracias de antemano por cualquier consejo.
Edita: En un sistema Linux donde las cosas funcionan como me gustaría, la variable TERM da
prompt$ echo $TERM
xterm-256color
El contenido 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