163 votes

Comment changer le curseur entre les modes Normal et Insertion dans Vim ?

J'aimerais savoir comment changer, si possible, le curseur dans Vim (en couleur, forme, etc.) en fonction du mode dans lequel on se trouve.

J'oublie constamment que je ne suis pas en mode Insertion et je commence à taper du code, ce qui entraîne toutes sortes de choses bizarres. Il serait utile qu'il y ait une sorte d'indication visuelle sur le curseur.

29 votes

Je vous suggère d'apprendre une règle : arrêter de taper => sortir du mode insertion. Ainsi, vous n'observerez jamais une situation où vous avez oublié que vous n'êtes pas en mode insertion.

7 votes

@ZyX sauf quand vous oubliez de quitter le mode insertion après avoir arrêté de taper :p

13 votes

@ZyX c'est une bonne règle et je l'ai toujours fait, mais les indicateurs visuels sont toujours importants. La marijuana est légale maintenant et j'oublie tout le temps ce que je fais.

0voto

amirali Points 1019

Cela fonctionne correctement sur xfce4-terminal :

ajouter le script suivant à votre .vimrc

if has("autocmd")
  au InsertEnter * silent execute "!sed -i.bak -e 's/TERMINAL_CURSOR_SHAPE_BLOCK/TERMINAL_CURSOR_SHAPE_IBEAM/' ~/.config/xfce4/terminal/terminalrc"                                                                                          
  au InsertLeave * silent execute "!sed -i.bak -e 's/TERMINAL_CURSOR_SHAPE_IBEAM/TERMINAL_CURSOR_SHAPE_BLOCK/' ~/.config/xfce4/terminal/terminalrc"                                                                                          
  au VimLeave * silent execute "!sed -i.bak -e 's/TERMINAL_CURSOR_SHAPE_IBEAM/TERMINAL_CURSOR_SHAPE_BLOCK/' ~/.config/xfce4/terminal/terminalrc"  
endif

Brève : Comme vous le savez, xfce4-terminal garde les préférences en .config/xfce4/terminal/terminalrc fichier. Le script modifie TERMINAL_CURSOR_SHAPE_BLOCK a TERMINAL_CURSOR_SHAPE_IBEAM lorsque vous êtes en mode insertion, et revient à block lorsque vous quittez le mode insertion ou vim. N'hésitez pas à modifier IBEAM à ce que vous voulez ( BLOCK , IBEAM y UNDERLINE disponibles).

-1voto

GmonC Points 8978

J'ai généralement le mode actuel de vim sur statusline, entre autres choses. Si vous recherchez la simplicité, vous pouvez définir seulement cette information sur la ligne d'état .

Cependant, les choses les plus folles se produisent généralement lorsque le verrouillage des majuscules est enfoncé et que vous êtes en mode commande (puisque les hjkl sont maintenant des HJKL - les J et K suffisent à vous arracher les cheveux lorsque vous ne comprenez pas ce qui se passe). Faites un :h J y :h K pour voir ce que je veux dire). Juste attention à la touche de verrouillage des majuscules et vous serez bien la plupart du temps IMO.

46 votes

En quoi cela répond-il à la question ?

2 votes

@DavidRivers C'est une application du problème XY où le PO demandait une résolution de son problème (ne pas savoir qu'il était en mode normal de vim et vouloir que le curseur change pour l'indiquer) mais s'est avéré satisfait d'une solution alternative (et IMO pas très bonne) (améliorer sa ligne de statut avec l'état).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X