J'aimerais savoir comment changer, si possible, le curseur dans Vim (en couleur, forme, etc.) en fonction du mode dans lequel vous vous trouvez.
J'oublie constamment que je ne suis pas en mode Insertion et que je commence à taper du code, ce qui entraîne toutes sortes de choses folles. Il serait utile qu'il y ait une sorte d'indication visuelle sur le curseur.
Réponses:
Une option populaire pour indiquer le basculement vers et depuis le mode Insertion est de basculer l'
cursorline
option, qui est responsable de savoir si la ligne d'écran actuelle est mise en surbrillance (voir:help cursorline
):Ou bien,
Modifiez le
CursorLine
groupe de surbrillance pour changer le style de la ligne du curseur à votre guise (voir:help :highlight
et:help highlight-groups
).la source
cursorline
option ne dépend d'aucune capacité spécifique à la plate-forme; il est disponible sur n'importe quelle instance de Vim compilée avec la+syntax
fonctionnalité (ce qui est généralement le cas).echo 'autocmd InsertEnter,InsertLeave * set cul!' >>~/.vimrc
Ce qui suit fonctionne dans xterm, urxvt et d'autres émulateurs de terminal sous Linux; iTerm2 sur macOS; Git Bash avec ConEmu sous Windows; et plus (voir commentaires):
Autres options (remplacez le numéro après
\e[
):Lorsque vous utilisez tmux , il est important de l'utiliser comme ça (sans
\<Esc>Ptmux;
échapper). tmux gardera une trace de la forme correcte du curseur lorsque vous changez de fenêtre / de volet.Si cela ne fonctionne pas pour vous, essayez soit de définir
TERM=xterm-256color
avant de démarrer tmux, soit d'ajouter ceci à votre.tmux.conf
( merci @Steven Lu ):la source
set -ga terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[2 q'
dans ma configuration tmux. Apparemment, si vous utilisezset
pourterminal-overrides
sans-a
, il remplacera le paramètre, qui l'a déjà par défaut.Si vous utilisez tmux et iTerm2 sur macOS ,
ce qui suit change le curseur d'un bloc en curseur et met en surbrillance la ligne actuelle
crédit: https://gist.github.com/andyfowler/1195581
la source
terminal-overrides
était uniquement ajoutée à, afin de ne pas écraser la,*:Ss=\E[%p1%d q:Se=\E[2 q
partie determinal-overrides
. donc ma configuration ressemble àset -sa terminal-overrides ",xterm-256color-italic:Tc"
(pour définir la couleur 24 bits permettant sans piétiner les styles de curseur Ss / Se.Pour modifier la forme du curseur dans différents modes, vous pouvez ajouter ce qui suit dans votre
.vimrc
fichier.Pour le terminal GNOME (version 2.26):
Si vous utilisez plus d'un profil dans GNOME Terminal, vous devrez peut-être l'adapter à vos profils.
Pour Konsole dans KDE4:
Cela fonctionne avec plusieurs onglets et fenêtres.
Voir aussi: « Changer la forme du curseur dans différents modes » sur le wiki Vim Tips .
la source
set ttimeoutlen=0
Vous pouvez essayer le plugin Terminus Vim :
la source
Je trouve utile de ne faire clignoter le curseur qu'en mode Insertion et de le garder statique dans les autres modes.
la source
Je ne sais pas si quelqu'un d'autre est confronté à un délai après avoir appuyé sur la Esctouche pour revenir en mode normal pour afficher le curseur de bloc, mais si c'est le cas, c'est ainsi que je le corrige aussi.
En fait, j'utilise iTerm2 et Vim dans mon terminal sous macOS. Et lorsque vous entrez en mode insertion, le curseur est toujours un bloc et est un peu déroutant lorsque vous êtes en mode insertion ou en mode normal.
Je voulais montrer une fine ligne comme curseur en mode insertion et revenir au bloc en mode normal comme le fait MacVim. Et pour ce faire, c'est assez simple, il suffit d'ajouter ceci à mon
.vimrc
fichier comme décrit ici :Mais comme vous pouvez le voir, il y a eu un délai lors de la frappe
ESC
pour quitter le mode d'insertion pour revenir au mode normal et afficher à nouveau le bloc comme curseur. Donc, pour le réparer, j'ai trouvé ceci:Et maintenant, cela fonctionne assez bien comme vous pouvez le voir:
J'espère que cela pourrait aider quelqu'un d'autre! 👻
la source
Je ne pense pas que cela ajoute beaucoup aux réponses que d'autres personnes ont déjà fournies, mais je voulais en quelque sorte résumer les choses en un seul endroit et avoir également des liens vers les références pertinentes.
Voici à quoi ressemble l'extrait de code pertinent de mon
.vimrc
:Remarque: Les
'^['
caractères sont en fait unESC
caractère de contrôle (séquence d'échappement).la source
Cela fonctionne correctement sur xfce4-terminal:
ajoutez le script suivant à votre
.vimrc
Bref: comme vous le savez, xfce4-terminal conserve les préférences dans un
.config/xfce4/terminal/terminalrc
fichier. Le script changeTERMINAL_CURSOR_SHAPE_BLOCK
àTERMINAL_CURSOR_SHAPE_IBEAM
lorsque vous êtes en mode d'insertion et de retour pour bloquer lorsque vous quittez le mode d' insertion ou vim. Sentez - vous libre de changerIBEAM
à tout ce que vous voulez (BLOCK
,IBEAM
etUNDERLINE
disponible).la source
Si vous utilisez une version moderne de
nvim
et que vous vouliez y parvenir, vous pouvez éviter certaines de ces solutions de contournement sophistiquées répertoriées ci-dessus.Les paramètres ci-dessous passeront du curseur de bloc en mode normal au curseur de soulignement lors du remplacement au curseur de ligne lors de l'insertion.
J'ai réussi à faire fonctionner cela avec les paramètres suivants tirés de ces deux sources.
forme-curseur-tui
guicurseur
la source
J'ai généralement le mode vim actuel sur la ligne d'état, entre autres. Si vous recherchez la simplicité, vous ne pouvez définir que ces informations sur la ligne d'état .
Cependant, les choses vraiment folles se produisent généralement lorsque le verrouillage des majuscules est enfoncé et que vous êtes en mode commande (puisque hjkl est maintenant HJKL - juste J et K suffisent pour vous faire tirer les cheveux lorsque vous ne comprenez pas ce qui se passe.
:h J
et:h K
pour voir ce que je veux dire). Méfiez-vous simplement de la touche de verrouillage des majuscules et tout ira bien la plupart du temps IMO.la source