16

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

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

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

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

3 ответа3

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.\+/

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .