In tutto ciò che segue, ^
indica la posizione del cursore.
Sto usando bash su Terminal su OS X Yosemite e mi piacerebbe usare il montaggio in linea in stile vi:
prompt$ set -o vi
^
Per impostazione predefinita, inizia in modalità di inserimento vi, quindi posso digitare immediatamente
prompt$ hello
^
Ora diciamo che uso il tasto freccia sinistra ← o H per spostarci a sinistra:
prompt$ hello
^
Ora non posso più spostarmi al giusto del o
in hello
usando → o L :
prompt$ hello # I can't move here anymore!
^
Se devo aggiungere qualcosa, devo premere Esc quindi Shift A .
Questo non accade in modo emacs ( set -o emacs
) o su alcune macchine Linux (ssh'd in SLC 6.6 con bash 4.1, o in modo nativo sul mio amico (credo Arch) con bash 4.3). In tutti questi, ← quindi → mi porta alla fine della riga dove posso continuare a digitare; sul mio terminale Mac non posso a meno che non esca dalla modalità Insert.
Anche questo non succede con vim sul mio Mac; vim mi consente di passare oltre la fine delle linee con i tasti freccia nella modalità di inserimento. È solo in modalità vi di lettura.
Ho provato ad aggiornare il mio bash (con Homebrew) da 3.2 a 4.3; che non ha risolto il problema.
Ho provato a rimuovere il mio .bash_profile e ad usare un Terminale non modificato; questo non l'ha risolto (Ho alcuni alias e modificatori di prompt nel mio .bash_profile.)
Ho letto questo , questo , e questo . Non hanno risposte.
Grazie in anticipo per qualsiasi consiglio!
Modifica: Su un sistema Linux in cui le cose funzionano come vorrei, la variabile TERM dà
prompt$ echo $TERM
xterm-256color
Il contenuto di /etc/inputrc
è
# 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