Як встановити маркер довжини рядка у vim / gvim?


74

У деяких текстових редакторах графічного інтерфейсу є вертикальна лінія, яка служить маркером довжини рядка (це допомагає зберігати рядки коротшими за 80 символів у файлах вихідного коду).

Чи можливо мати щось подібне у vim / gvim? Я знаю про варіант viller- лінійки , але не дуже зручно це візуально слідкувати за великим екраном.

Редагувати: коли googling для "colorcolumn" дізнався більше, я виявив, що це питання є дублікатом https://stackoverflow.com/questions/235439/vim-80-column-layout-concerns


дублікат на іншому сайті ... stackoverflow.com/questions/235439/…
Тревор Бойд Сміт

Відповіді:


130

Просто виконайте це

:set colorcolumn=72

Ви також можете префіксувати аргумент за допомогою -або +поставити маркер, який має багато стовпців ліворуч або праворуч textwidth, і він приймає список розділених комами колон. Я думаю, що colorcolumnваріант є лише у Vim 7.3. Подивитися

:help colorcolumn

8
Нічого собі, vim не перестає мене дивувати!
Пітер Норе

4
Приємно! Також корисно, коли columns=80, wrapвстановлено і colorcolumn=81,161,241,321,401,481,561,641,721,801- відображається до 10 обернутих рядків із виділеним першим стовпцем.
Амір

19

З бесіди Даміана Конвей "Більш миттєво краща Vim" на OSCON 2013:

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

Це призводить до того, що персонаж виділяється в пурпуровий (знімок екрана DarkCyan), коли рядок переходить максимум 80 символів.

vim із підсвічуванням

Для GVim: це краще перемістити ці 2 рядки до останньої частини вашого .vimrcфайлу , щоб переконатися , що він працює.


Ага! Я щойно відповів на ваше дуже схоже запитання щодо цього ... малого світу! superuser.com/questions/771558/…
lornix

Я поставив цю відповідь, а потім згадав, що не міг цього зробити в gVim, тому запитав. ;)
Іссек

Ого, це справді чудово! Це така особливість, яку я навіть не знав би шукати. Я використовую шаблон, '\$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: A Cookbook, щоб отримати максимальну користь від останнього редактора Vim Кіма Шульца.

Він виділяє ErrorMsg(зазвичай яскраво-червоним) будь-які рядки, що містять більше 80 символів. Добре працює для мене.

function! RemoveWidthLimitWarnigns()
    silent! call matchdelete(4)
endfunction
function! InsertWidthLimitWarnings()
    call RemoveWidthLimitWarnigns()
    call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4)
endfunction

Що я повинен робити з цим фрагментом? Просто вставте його у .vimrc?
vtest

Спробуйте спочатку просто подзвонити :call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4). Але я б більше не рекомендував цього, оскільки @garyjohn знав щось краще
souser12345
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.