Je suis toujours un peu confus quand bash en vi-mode passe en insert-mode, parce qu'il ne donne aucune indication sur le mode utilisé (commande ou édition). Y a-t-il un moyen de distinguer les modes ? Peut-être un changement automatique de la couleur du curseur ou quelque chose comme ça ?
Réponses
Trop de publicités?Dans /etc/inputrc (ou ~/.inputrc) ajoutez ceci :
set show-mode-in-prompt on
ceci préfixera votre invite avec + en mode d'insertion, et : en mode commande dans bash 4.3
EDIT : dans la dernière version de bash 4.4, vous obtiendrez plutôt une invite préfixée par "(ins)" ou "(cmd)" par défaut. mais vous pouvez changer cela :
set vi-ins-mode-string "+"
set vi-cmd-mode-string ":"
Vous pouvez également utiliser des codes de couleur comme ' \e [1;31m], mais les entourer de ' \1 et \2 pour garder la ligne de lecture heureuse :
set vi-cmd-mode-string "\1\e[1;31m\2:\1\e[0m\2"
Dans le prolongement de la réponse de @Isaac Hanson, vous pouvez définir le style du curseur pour qu'il reflète le mode (comme dans VIM) en définissant ces paramètres dans votre fichier .inputrc
:
set editing-mode vi
set show-mode-in-prompt on
set vi-ins-mode-string \1\e[6 q\2
set vi-cmd-mode-string \1\e[2 q\2
# optionally:
# switch to block cursor before executing a command
set keymap vi-insert
RETURN: "\e\n"
Cela vous donnera un curseur de faisceau en mode insertion ou un curseur de bloc pour le mode normal.
Autres options (remplacez le numéro après \e[
) :
Ps = 0 -> blinking block.
Ps = 1 -> blinking block (default).
Ps = 2 -> steady block.
Ps = 3 -> blinking underline.
Ps = 4 -> steady underline.
Ps = 5 -> blinking bar (xterm).
Ps = 6 -> steady bar (xterm).
Votre terminal doit supporter DECSCURSR (comme xterm, urxvt, iTerm2). TMUX les supporte également (si vous définissez TERM=xterm-256color
en dehors de tmux).
Après des années d'utilisation du mode vi dans l'interpréteur de commandes korn, j'ai appris à me contenter de taper sur le clavier. ESC
plusieurs fois avant de taper des commandes, et ESC
puis i
pour commencer à taper.
La prémisse de base étant que si vous tapez juste ESC
vous savez précisément dans quel mode vous vous trouvez.
En raison de ce "problème" et de nombreux autres problèmes liés à la convivialité et aux fonctionnalités, vous devriez utiliser vim au lieu de vi. Lorsque vous utilisez vim, vous verrez un texte "-- INSERT --" en bas lorsque vous passez en mode insertion.
avec vi, il y a moyen.
EDIT :
Vim est à peu près la même chose que vi, mais amélioré et le plus souvent utilisé en dehors ;)