Comment puis-je faire en sorte que la colonne des signes s'affiche tout le temps même si aucun signe n'y a été ajouté?

32

Je viens d'ajouter le plugin Git Gutter pour Vim qui montre les lignes ajoutées / modifiées / supprimées selon git diff. Il utilise le Sign Columnpour afficher les caractères à côté de chaque ligne.

Pour le moment, la colonne apparaît lors de la sauvegarde, ce qui est assez choquant. Je préfère que la colonne s'affiche toujours, même si elle est vide.

Comment puis-je rendre la colonne de signe toujours visible?

jordelver
la source

Réponses:

40

À partir de Vim 7.4.2201, vous pouvez faire:

:set signcolumn=yes

Cp. :help 'signcolumn'. Pour les anciennes versions de Vim, vous devez définir un signe fictif et le placer dans le tampon actuel:

:sign define dummy
:execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')
Ingo Karkat
la source
14
Pour le faire fonctionner dans chaque nouveau tampon que vous ouvrez, mettez les deux autocmd BufEnter * sign define dummyet autocmd BufEnter * execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')dans votre vimrc.
akent
Semble obsolète, tout comme set signcolumn=yesl'astuce sans manigances.
cprn
1
@cprn: Vous avez raison; Je l'ai ajouté à ma réponse. Merci!
Ingo Karkat
Merci également d'avoir retiré ma réponse du bas. À votre santé!
cprn
22

Pour vim-gitgutter en particulier, vous pouvez également définir la variable suivante dans votre ~/.vimrc:

let g:gitgutter_sign_column_always = 1

MISE À JOUR

Le plugin va maintenant émettre un avertissement pour supprimer la ligne ci-dessus et utiliser à la place:

set signcolumn="yes"
wjv
la source
Merci, cette option doit être ajoutée après la publication de cette question. Utile à savoir cependant.
jordelver
1
En effet, il semble que l'engagement qui l'a ajouté ait été pris le 14 mars 2013 - exactement deux semaines après votre question!
wjv
En travaillant sur quelque chose d'autre, j'ai récemment fouillé dans la source GitGutter, et j'ai remarqué que le réglage de cette variable force l'affichage de la colonne de signe exactement de la même manière que la réponse acceptée à cette question - en définissant un signe fictif.
wjv
5
btw, pour moi c'était set signcolumn=yes sans les guillemets
tam5
6

Alors que la petite danse définissant un signe et le plaçant fonctionne bien, une alternative plus élégante qui fonctionne bien pour moi est:

autocmd BufRead,BufNewFile * setlocal signcolumn=yes

Et s'il y a certains types de fichiers qui ne sont pas censés avoir la colonne:

autocmd FileType tagbar,nerdtree setlocal signcolumn=no
innaM
la source
Erreur détectée lors du traitement des commandes BufReadPost Auto pour "*": E518: option inconnue: signcolumn = yes
brandones
Vous avez besoin d'une version plus récente de vim, @brandonjones. Je ne sais pas quand a signcolumnété ajouté, mais il n'est pas là dans 7.2 et il est là dans 8.0. Je ne me souviens pas l'avoir vu en 7.4, mais il est peut-être là. Il est présent dans les versions actuelles de Vim et Neovim.
Jim Stewart