Настройка нескольких правил подсветки в vim

16

Я пытаюсь настроить правила, чтобы выделить как конечные пробелы, так и строки более определенной длины, добавив это в мой .vimrc:

highlight ExtraWhitespace ctermbg=lightgray guibg=lightgray
match ExtraWhitespace /\s\+$/

highlight OverLength ctermbg=lightgray guibg=lightgray
match OverLength /\%>80v.\+/

Тем не менее, кажется, что это происходит только в зависимости от того, что будет последним. Я не могу найти способ заставить их работать одновременно.

ICR
источник

Ответы:

9

В одну сторону:

highlight EWOL ctermbg=lightgray ctermfg=black guibg=lightgray guifg=black
match EWOL /\%>20v.\+\|\s\+$/

Другой:

highlight ExtraWhitespace ctermbg=lightgray ctermfg=black guibg=lightgray guifg=black
match ExtraWhitespace /\s\+$/

highlight OverLength ctermbg=lightgray ctermfg=black guibg=lightgray guifg=black
2match OverLength /\%>80v.\+/

Также в наличии: 3match. Одновременно могут быть активными до трех матчей. Или вы можете использовать matchadd()для создания матчей без ограничения по количеству.

Примечание: 3match используется matchparen, поэтому будет конфликтовать, если вы его используете.

Приостановлено до дальнейшего уведомления.
источник
7

Используйте matchadd(), так что добавьте это к вашему .vimrc:

highlight ExtraWhitespace ctermbg=grey guibg=grey
call matchadd('ExtraWhitespace', '\s\+$', 11)

highlight OverLength ctermbg=lightgrey guibg=lightgrey
call matchadd('OverLength', '\%>80v.\+')

Для просмотра всех матчей:

:echo getmatches()

Для удаления спичек используйте matchdelete().

Джеймс Хей
источник
1

Как насчет использования этого

: sy [ntax] match {group-name} [{options}] [excludenl] {pattern} [{options}]

:highlight ExtraWhitespace ctermbg=lightgray guibg=lightgray
:syntax match ExtraWhitespace /\s\+$/
:highlight OverLength ctermbg=lightgray guibg=lightgray
:syntax match OverLength /\%>80v.\+/

Вы можете сопоставить множество шаблонов, используя это ...

imbichie
источник