Как настроить маркер длины строки в vim / gvim?

75

Некоторые текстовые редакторы с графическим интерфейсом имеют вертикальную линию, которая служит маркером длины строки (это помогает сохранять строки короче 80 символов в файлах исходного кода).

Возможно ли иметь что-то подобное в vim / gvim? Я знаю о параметре линейки vim, но не очень удобно визуально следить за ним на большом экране.

Изменить: при поиске "colorcolumn", чтобы узнать больше, я обнаружил, что этот вопрос является дубликатом https://stackoverflow.com/questions/235439/vim-80-column-layout-concerns

VTEST
источник
дублировать на другом сайте ... stackoverflow.com/questions/235439/…
Тревор Бойд Смит

Ответы:

131

Просто выполните это

:set colorcolumn=72

Вы также можете добавить к аргументу аргумент -или +поставить маркер на столько столбцов слева или справа от него textwidth, и он принимает список столбцов через запятую. Я думаю, что colorcolumnвариант только в Vim 7.3. Видеть

:help colorcolumn
garyjohn
источник
8
Вау, Вим не перестает меня удивлять!
Питер Нор
4
Приятно! Также полезно , когда columns=80, wrapустанавливаются и colorcolumn=81,161,241,321,401,481,561,641,721,801- отображает до 10 перенесенных строк с первой колонкой выделено.
Амир
20

Из выступления Дамиана Конвея «Более мгновенно лучше Vim» на OSCON 2013:

highlight ColorColumn ctermbg=magenta
call matchadd('ColorColumn', '\%81v', 100)

Это приводит к тому, что символ выделяется пурпурным цветом (снимок экрана показан DarkCyan), когда линия превышает максимум 80 символов.

Vim с подсветкой включен

Для gVim: лучше всего переместить эти 2 строки в последнюю часть вашего .vimrcфайла, чтобы убедиться, что он работает.

Isxek
источник
Ха! Я только что ответил на ваш очень похожий вопрос об этом ... маленьком мире! superuser.com/questions/771558/…
lornix
Я вставил этот ответ, потом вспомнил, что не могу сделать это в gVim, поэтому я спросил. ;)
Isxek
Вау, это действительно здорово! Это та особенность, которую я даже не знаю искать. Я использую шаблон, '\$81v\S'который соответствует только непробельные символы. Это означает, что выделение не будет отображаться, когда длина строки ровно 80 символов (что меня очень беспокоило). См. Это для получения дополнительной информации stackoverflow.com/questions/12985042/…
fvgs
1
Хочу внести пару исправлений в мой предыдущий комментарий. $Должно было быть %. Аналогично, теперь я использую шаблон, \%81v.так как это гарантирует, что 81-й столбец будет подсвечен для любого символа в 81-м столбце, что, вероятно, то, что вы хотите.
fvgs
2

Вы можете попробовать это:

grep '.\{81\}' file

или же

set colorcolumn=80

(или сокращенный эквивалент)

set cc=80

или как указано выше:

match ErrorMsg '\%>80v.\+'
Габриэль Заллес
источник
0

Ниже приведен неуклюжий трюк из Hacking Vim: Поваренная книга, чтобы получить максимальную отдачу от последнего редактора Vim от Kim Schultz.

Он выделяет ErrorMsg(обычно ярко-красным) любые строки длиной более 80 символов. Хорошо работает для меня.

function! RemoveWidthLimitWarnigns()
    silent! call matchdelete(4)
endfunction
function! InsertWidthLimitWarnings()
    call RemoveWidthLimitWarnigns()
    call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4)
endfunction
unperson325680
источник
Что я должен делать с этим фрагментом? Просто вставьте его в .vimrc?
vtest
Сначала :call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4)достаточно просто позвонить . Но я бы не рекомендовал это больше, так как @garyjohn знал кое-что лучше
unperson325680