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?

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('')

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"

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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.