In tutto ciò che segue, il ^
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 spostare a sinistra:
prompt$ hello
^
Ora non posso più spostarmi al destra del o
nel hello
usando entrambi → o L :
prompt$ hello # I can't move here anymore!
^
Se devo aggiungere qualcosa, devo colpire Esc poi Cambio UN .
Questo non succede in modalità emacs ( set -o emacs
) o su alcune macchine Linux (ssh'd in SLC 6.6 con bash 4.1, o nativamente sul mio amico (credo Arch) con bash 4.3). In tutti questi, ← poi → 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 leggibile.
Ho provato ad aggiornare il mio bash (con Homebrew) da 3.2 a 4.3; questo non l'ha risolto
Ho provato a rimuovere il mio .bash_profile e ad usare un Terminale non modificato; questo non l'ha risolto (Ho alcuni alias e prompt modificatori nel mio .bash_profile.)
ho letto Questo , Questo , e Questo . Non hanno risposte.
Grazie in anticipo per qualsiasi consiglio!
Modificare: 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
siamo
# 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
.inputrc
nella mia home directory. Ho pubblicato il contenuto di /etc/inputrc
, è stato piuttosto breve, ma non so se questo particolare /etc/inputrc
è quello che vuoi, dal momento che la macchina Linux su cui lavoro serve molti utenti.
TERM
variabile ambientale così come i contenuti di/etc/inputrc
e~/.inputrc
(se esiste) da uno dei sistemi in cui questo comportamento funziona come si desidera (solo le righe non commentate come il file è probabilmente abbastanza grande)?