Як я можу зробити так, щоб стовпець знаків відображався постійно, навіть якщо до нього не додано жодних знаків?


32

Я щойно додав плагін Git Gutter для Vim, який показує додані / змінені / видалені рядки відповідно до git diff. Він використовує Sign Columnдля відображення символів поруч із кожним рядком.

На даний момент стовпець з'являється на збереженні, що досить неприємно. Я вважаю за краще, щоб стовпець завжди відображався, навіть якщо він порожній.

Як зробити так, щоб стовпець знаків завжди був видимим?

Відповіді:


40

Починаючи з Vim 7.4.2201, ви можете:

:set signcolumn=yes

Ср. :help 'signcolumn'. Для старих версій Vim ви повинні визначити фіктивний знак і помістити його в поточний буфер:

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

14
Щоб він працював у кожному новому буфері, який ви відкриваєте, поставте autocmd BufEnter * sign define dummyі autocmd BufEnter * execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')в, і в свій vimrc.
akent

Здається, застаріла, як set signcolumn=yesі трюк без шнаніганів.
cprn

1
@cprn: Ти маєш рацію; Я додав це до своєї відповіді. Спасибі!
Інго Каркат

Дякую також вам, видаливши мою відповідь знизу. Ура!
cprn

22

Спеціально для vim-gitgutter ви також можете встановити наступну змінну у своєму ~/.vimrc:

let g:gitgutter_sign_column_always = 1

ОНОВЛЕННЯ

Тепер плагін видасть попередження про видалення вищевказаного рядка і замість цього використовувати:

set signcolumn="yes"

Дякуємо, що цей варіант повинен бути доданий після публікації цього питання. Корисно все-таки знати.
jordelver

1
Справді, здається, що зобов’язання, яке додало, було зроблено 14 березня 2013 року - рівно через два тижні після вашого запитання!
wjv

Працюючи над чимось іншим, я нещодавно заглянув усередину джерела GitGutter, і помітив, що встановлення цієї змінної змушує відображення стовпця знаків точно так само, як прийнята відповідь на це запитання - встановивши фіктивний знак.
wjv

5
btw, для мене це було set signcolumn=yes без цитат
tam5

6

Хоча маленький танець, що визначає знак і розміщує його, працює нормально, більш елегантною альтернативою, яка добре допомагає для мене, є:

autocmd BufRead,BufNewFile * setlocal signcolumn=yes

І якщо є певні типи файлів, у яких не повинно бути стовпця:

autocmd FileType tagbar,nerdtree setlocal signcolumn=no

Виявлена ​​помилка під час обробки команд BufReadPost Auto для "*": E518: Невідомий варіант: signcolumn = так
brandones

Вам потрібна нова версія vim, @brandonjones. Я не впевнений, коли це signcolumnбуло додано, але його немає у 7.2 та там у 8.0. Я не пам’ятаю, щоб це бачили в 7.4, але він може бути там. Він присутній у поточних версіях як Vim, так і Neovim.
Джим Стюарт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.