Jak sprawić, by Kolumna Znaków wyświetlała się cały czas, nawet jeśli nie dodano do niej Znaków?

32

Właśnie dodałem wtyczkę Git Gutter dla Vima, która pokazuje linie dodane / zmodyfikowane / usunięte zgodnie z git diff. Używa Sign Columndo wyświetlania znaków obok każdej linii.

W tej chwili kolumna pojawia się przy zapisie, co jest dość denerwujące. Wolałbym, aby kolumna zawsze wyświetlała się, nawet jeśli jest pusta.

Jak sprawić, by kolumna podpisu była zawsze widoczna?

jordelver
źródło

Odpowiedzi:

40

Począwszy od wersji Vim 7.4.2201 możesz:

:set signcolumn=yes

Cp. :help 'signcolumn'. W starszych wersjach Vima musisz zdefiniować fikcyjny znak i umieścić go w bieżącym buforze:

:sign define dummy
:execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')
Ingo Karkat
źródło
14
Aby działał w każdym nowym buforze, który otwierasz, włóż oba autocmd BufEnter * sign define dummyi autocmd BufEnter * execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')do vimrc.
akent
Wydaje się przestarzały, podobnie jak set signcolumn=yessztuczka bez shenaniganów.
cprn
1
@cprn: Masz rację; Dodałem to do mojej odpowiedzi. Dzięki!
Ingo Karkat
Dziękuję również, usuwając moją odpowiedź z dołu. Twoje zdrowie!
cprn
22

W przypadku vim-gitgutter możesz także ustawić następującą zmienną w swoim ~/.vimrc:

let g:gitgutter_sign_column_always = 1

AKTUALIZACJA

Wtyczka wyświetli teraz ostrzeżenie, aby usunąć powyższą linię i zamiast tego użyć:

set signcolumn="yes"
wjv
źródło
Dzięki, ta opcja musi zostać dodana po opublikowaniu tego pytania. Warto jednak wiedzieć.
jordelver
1
Rzeczywiście wydaje się, że zatwierdzenie, które go dodało, zostało dokonane 14 marca 2013 r. - dokładnie dwa tygodnie po twoim pytaniu!
wjv
Pracując nad czymś innym, ostatnio przeszukiwałem źródło GitGutter i zauważyłem, że ustawienie tej zmiennej wymusza wyświetlanie kolumny znaku w dokładnie taki sam sposób, jak zaakceptowana odpowiedź na to pytanie - poprzez ustawienie fikcyjnego znaku.
wjv 11.04.16
5
btw, dla mnie to było set signcolumn=yes bez cytatów
tam5
6

Podczas gdy mały taniec definiujący znak i umieszczający go działa dobrze, bardziej elegancką alternatywą, która działa dobrze dla mnie, jest:

autocmd BufRead,BufNewFile * setlocal signcolumn=yes

A jeśli istnieją pewne typy plików, które nie powinny mieć kolumny:

autocmd FileType tagbar,nerdtree setlocal signcolumn=no
innaM
źródło
Wykryto błąd podczas przetwarzania poleceń BufReadPost Auto dla „*”: E518: Nieznana opcja: signcolumn = tak
brandones
Potrzebujesz nowszej wersji vim, @brandonjones. Nie jestem pewien, kiedy signcolumnzostał dodany, ale nie ma go w 7.2 i jest w 8.0. Nie pamiętam, żeby widziałem to w 7.4, ale może tam być. Jest obecny w aktualnych wersjach Vima i Neovima.
Jim Stewart