Définir des numéros de ligne uniquement en mode normal

8

Je n'ai pas beaucoup d'utilité pour les numéros de ligne en mode insertion, donc je voudrais les désactiver. Cependant, ils sont parfaits pour le mode normal.

L'utilisation constante set nu!est fastidieuse. Existe-t-il un moyen de lier la set nu!sortie et l'entrée en mode normal?

Des solutions en utilisant ce qui précède ou toute autre méthode?

Jason Basanese
la source
En ce qui concerne votre commentaire sur la réponse de @ Carpetsmoker, pourquoi garderiez-vous la marge mais pas les numéros de ligne? Quelle était votre intention initiale de vous débarrasser des chiffres?
Rolf
Il sert à différencier le mode d'insertion du mode normal. La suppression des numéros de ligne sert également à supprimer les informations non pertinentes du mode insertion. Si chaque fois que vous entrez en mode insertion, vous supprimez la marge, vous aurez probablement mal à la tête de tout le texte en déplaçant trois espaces à chaque fois. Certains pourraient préférer cela, mais ce n'est pas ma préférence.
Jason Basanese

Réponses:

13

Vous pouvez le faire avec des autocommandes.

au InsertEnter * set nonumber
au InsertLeave * set number

Peu d'explications sont nécessaires. Cela fait exactement ce que vous avez demandé. Il lie "l'entrée et la sortie du mode insertion" à "l'activation et la désactivation des numéros de ligne".

James
la source
1
Notez cependant que InsertLeave n'est pas déclenché, lorsque vous utilisez Ctrl-C pour quitter le mode d'insertion
Christian Brabandt
5

Voici une solution alternative qui ne fera que masquer les chiffres, mais ne changera pas réellement la marge à gauche afin que votre texte ne saute pas tellement lorsque vous entrez / quittez le mode insertion:

set number

augroup number
    autocmd!
    autocmd InsertEnter * highlight LineNr ctermfg=white guifg=white
    autocmd InsertLeave * highlight LineNr ctermfg=130 guifg=Brown
augroup end

Lorsque vous entrez en mode d'insertion, cela définira la couleur du texte sur la couleur d'arrière-plan. Dans mon cas, c'est blanc, mais cela peut être différent dans votre cas. Lorsque nous quittons le mode d'insertion, il le réinitialise à la valeur par défaut pour mon jeu de couleurs.

Vous pouvez trouver la valeur par défaut pour votre jeu de couleurs avec:

:highlight LineNr
LineNr         xxx term=underline ctermfg=130 guifg=Brown
Martin Tournoij
la source
3
Encore mieux:au InsertEnter * hi LineNr ctermbg=NONE ctermfg=bg guifg=bg
Christian Brabandt
C'est probablement ce que j'utiliserai, mais l'autre réponse est plus concise et répond directement à la question.
Jason Basanese