20090505

Показать длинные (>80) строчки в Vim

Большинство программистов согласятся, что строчки кода должны быть короче 80 символов. Часто это просто хороший тон: читаем Linux Kernel Coding Style (80) , Style Guide for Python code (79), Good Haskell Style (79), Ruby Coding Conventions (80), Google C++ Style Guide (80)...

Практический вопрос: а как в Vim увидеть, что строка стала длиннее 80 символов? Это может быть очень полезно, если ширина окна больше 80. Простой и дубовый способ: 80| и курсор перемещается на 80-ю колонку. Однако каждую строчку так проверять неудобно.

Более элегантный выход — подсвечивать всё, что за 80-ю колонку вылазит. Сразу куча (похожих) рецептов: Highlight long lines.

Включить подсветку вручную:
:match ErrorMsg '\%>80v.\+'
Чтобы включать подсветку автоматически, каждый раз при открытии буфера, в ~/.vimrc помещаем:
:au BufWinEnter * let w:m1=matchadd('Search', '\%<81v.\%>77v', -1)
:au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1)
Должно работать в Vim после 7.1.40. При этом последние 4 символа до 80-й колонки будут предупреждающе подсвечиваться «поиском», а все, что после 80-й — «ошибкой».

Дополнение: в комментариях предложен ещё и другой способ выделить последние 4 символа строки:
:au BufWinEnter * let w:m1=matchadd('Search', '\%>76v.*\%<81v', -1)
Тоже работает.


Получается вот так:



Про подсветку табуляций вперемежку с пробелами и концевых пробелов см. следующую заметку.