Come posso fare in modo che la Colonna dei segni sia sempre visibile anche se non sono stati aggiunti segni?


32

Ho appena aggiunto il plugin Git Gutter per Vim che mostra le linee aggiunte / modificate / cancellate secondo git diff. Usa il Sign Columnper mostrare i caratteri accanto a ciascuna riga.

Al momento la colonna appare al momento del salvataggio, il che è abbastanza stonante. Preferirei che la colonna mostrasse sempre, anche se vuota.

Come posso rendere sempre visibile la colonna dei segni?

Risposte:


40

A partire da Vim 7.4.2201, puoi fare:

:set signcolumn=yes

Cp. :help 'signcolumn'. Per le versioni precedenti di Vim, è necessario definire un segno fittizio e posizionarlo nel buffer corrente:

:sign define dummy
:execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')

14
Per farlo funzionare in ogni nuovo buffer che apri, inserisci entrambi autocmd BufEnter * sign define dummye autocmd BufEnter * execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')nel tuo vimrc.
Akent

Sembra obsoleto così come set signcolumn=yesil trucco senza shenanigans.
cprn

1
@cprn: hai ragione; L'ho aggiunto alla mia risposta. Grazie!
Ingo Karkat,

Grazie anche, rimuovendo la mia risposta dal basso allora. Saluti!
cprn,

22

Per vim-gitgutter in particolare, puoi anche impostare la seguente variabile nel tuo ~/.vimrc:

let g:gitgutter_sign_column_always = 1

AGGIORNARE

Il plugin ora emetterà un avviso per rimuovere la riga sopra e invece utilizzerà:

set signcolumn="yes"

Grazie, quell'opzione deve essere stata aggiunta dopo che questa domanda è stata pubblicata. Utile sapere però.
jordelver

1
In effetti, sembra che l'impegno che l'ha aggiunto sia stato fatto il 14 marzo 2013, esattamente due settimane dopo la tua domanda!
wjv,

Mentre lavoravo su qualcos'altro, di recente ho cercato all'interno della fonte GitGutter e ho notato che l'impostazione di questa variabile forza la visualizzazione della colonna dei segni esattamente allo stesso modo della risposta accettata a questa domanda - impostando un segno fittizio.
wjv,

5
btw, per me era set signcolumn=yes senza virgolette
tam5

6

Mentre la piccola danza che definisce un segno e lo posiziona funziona bene, un'alternativa più elegante che funziona bene per me è:

autocmd BufRead,BufNewFile * setlocal signcolumn=yes

E se ci sono alcuni tipi di file che non dovrebbero avere la colonna:

autocmd FileType tagbar,nerdtree setlocal signcolumn=no

Errore rilevato durante l'elaborazione dei comandi automatici di BufReadPost per "*": E518: opzione sconosciuta: signcolumn = yes
brandones,

Hai bisogno di una versione più recente di vim, @brandonjones. Non sono sicuro di quando è signcolumnstato aggiunto, ma non è presente in 7.2 ed è presente in 8.0. Non ricordo di averlo visto in 7.4, ma potrebbe essere lì. È presente nelle versioni attuali di Vim e Neovim.
Jim Stewart,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.