Je suis toujours un peu confus lorsque bash en vi-mode passe en mode insertion, car cela ne donne aucun conseil sur le mode utilisé (commande ou modification). Existe-t-il un moyen de distinguer les mods? Peut-être un changement automatique de la couleur du curseur ou quelque chose comme ça?
dans/etc/inputrc (ou ~/.inputrc) ajoutez ceci:
set show-mode-in-Prompt on
cela préfixera votre invite avec + en mode insertion, et : en mode commande dans bash 4.3
EDIT: dans la dernière version de bash 4.4, vous obtiendrez à la place une invite avec le préfixe "(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"
En vous appuyant sur la réponse de @Isaac Hanson, vous pouvez définir le style du curseur pour refléter le mode (comme dans VIM) en le définissant dans votre .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 d'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 prendre en charge DECSCURSR (comme xterm, urxvt, iTerm2). TMUX les prend également en charge (si vous définissez TERM=xterm-256color
en dehors de tmux).
Après des années d'utilisation du mode vi dans korn Shell, je me suis essentiellement entraîné à appuyer sur ESC
plusieurs fois avant de taper des commandes, et ESC
puis i
pour commencer à taper .
Le principe de base étant que si vous appuyez simplement sur ESC
, vous savez précisément dans quel mode vous êtes.