Dans tout ce qui suit, le ^
indique la position du curseur.
J'utilise bash sur Terminal sous OS X Yosemite et j'aimerais utiliser l'édition de lignes à la manière de vi :
prompt$ set -o vi
^
Par défaut, il démarre en mode insertion vi, ce qui me permet de taper immédiatement
prompt$ hello
^
Supposons maintenant que j'utilise la touche fléchée gauche o H pour aller vers la gauche :
prompt$ hello
^
Maintenant, je ne peux plus me déplacer vers le droit de la o
en hello
en utilisant soit o L :
prompt$ hello # I can't move here anymore!
^
Si je veux ajouter quelque chose, je dois cliquer sur Esc puis ShiftA .
Cela ne se produit pas en mode emacs ( set -o emacs
) ou sur certaines machines Linux (en se connectant en mode ssh à SLC 6.6 avec bash 4.1, ou en mode natif sur la machine de mon ami (Arch, je crois) avec bash 4.3). Dans tous ces cas, puis m'amène à la fin de la ligne où je peux continuer à taper ; sur mon terminal Mac, je ne peux pas le faire à moins de quitter le mode Insertion.
Cela ne se produit pas non plus avec vim sur mon Mac ; vim me permet de dépasser la fin des lignes avec les touches fléchées en mode Insertion. C'est juste le mode vi readline.
J'ai essayé de mettre à jour mon bash (avec Homebrew) de 3.2 à 4.3 ; cela n'a pas résolu le problème.
J'ai essayé de supprimer mon fichier .bash_profile et d'utiliser un terminal non modifié, mais cela n'a pas résolu le problème. (J'ai des alias et des modificateurs d'invite dans mon fichier .bash_profile).
J'ai lu cette , cette et cette . Ils n'ont pas de réponses.
Merci d'avance pour tout conseil !
Editer : Sur un système Linux où les choses fonctionnent comme je le souhaite, la variable TERM donne
prompt$ echo $TERM
xterm-256color
Le contenu de /etc/inputrc
sont
# 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