Как я могу установить линейку на определенный столбец?

50

При кодировании на разных языках, я склонен ограничивать свои строки определенной длиной (обычно 79 или 80 символов).

Я видел это в других редакторах с помощью линейки (сплошная линия отображается в столбце) или путем изменения цвета текста, чтобы показать, что он перешел.

Как я могу указать, чтобы Vim указывал мне, когда я подхожу к 79 символам в одной строке?

Кевин Браун
источник

Ответы:

64

Вы можете отобразить линейку в определенной строке, используя опцию :set colorcolumn( :set ccдля краткости), которая доступна только в Vim 7.3 или более поздней версии .

set colorcolumn=80

Это установит красный цвет фона этого столбца, предоставляя вам визуальную линейку для работы.

Изображение цветовой колонки по умолчанию установлено на 80

Если вы хотите использовать другой цвет, отличный от красного (который действительно выделяется), вы можете изменить цвет, установив highlightдля ColorColumn.

highlight ColorColumn ctermbg=0 guibg=lightgrey

Индивидуальный цвет для столбца

Вы можете установить цвет для терминальных версий Vim, используя ctermаргумент, и версии графического интерфейса Vim, используя guibgаргумент. Это 0значение escape-кода ASCII для черного, которое становится серым, когда оно становится ярким (по умолчанию это так). Это значение lightgreyиспользуется для версий Vim с графическим интерфейсом, например gVim, для изменения цвета фона на светло-серый.

Кевин Браун
источник
10
Вы даже можете иметь несколько цветовых колонок через запятую!
200_success
4
Объедините это с join & range, и вы можете получить группу столбцов, раскрашенных очень небольшим кодом. Мой .vimrc имеет:execute "set colorcolumn=" . join(range(81,335), ',')
Опрос Коди
19

В качестве дополнения к ответу Кевина, вы можете иметь несколько цветовых колонок. Когда я кодирую, у меня иногда есть «мягкий» лимит в 80 столбцов и «жесткий» лимит в 120 столбцов. Поэтому я хочу, чтобы линия на 80, а затем каждый столбец после 120, чтобы быть цветными.

Я делаю это с

let &colorcolumn="80,".join(range(120,999),",")

Конечно, это может быть легко изменено на другие предпочтения.

davidlowryduda
источник
14

Vim 7.3 предлагает эту colorcolumnопцию, как очень подробно описано в других ответах.

Однако, если у вас нет версии 7.3 по какой-либо причине, вы все равно можете получить визуальную индикацию того, что вы превысили определенное количество столбцов, используя matchфункциональность vim (см. :help matchПодробности).

По сути, команды соответствия позволяют создавать постоянные блики для текста, соответствующего заданному регулярному выражению. :match ColorColumn "\%80v."выделит текст в столбце 80 с группой «ColorColumn». Конечно, вы можете заменить любую группу выделения и любое значение столбца. Если вам нужна четкая визуальная индикация, выражение "\%>79v.\+"выделит столбец 80 и далее.

( \%80vозначает «сопоставить в виртуальном столбце 80» и \%>79vозначает «сопоставить после виртуального столбца 79; см. :help /\%cподробнее»).

Этот подход будет выделен только тогда, когда в указанных столбцах присутствуют действительные символы, что делает его визуально менее согласованным, чем colorcolumn.


источник
4
Лично я нахожу менее последовательный подход matches лучше, поскольку он выделяет только те строки, где я превышаю предел в 80 столбцов, вместо того, чтобы показывать (для меня) навязчивую большую красную линию в правой части экрана. Следовательно, в моем vimrc для Python я использую call matchadd('ColorColumn', '\(\%80v\|\%100v\)')(80 и 100 - рекомендуемые длины в PEP 8)
jalanb