17

I am trying to set up rules to highlight both trailing whitespace and lines which are over a certain length by adding this to my .vimrc:

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

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

However, it only seems to pick up whichever is last. I can't find a way to get them to both work simultaneously.

3 Answers 3

10

One way:

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

Another:

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

Also available: 3match. Up to three matches can be active at a time. Or you can use matchadd() to create matches without limit to the quantity.

Note: 3match is used by matchparen, so will conflict if you use it.

8

Use matchadd(), so add this to your .vimrc:

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

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

To view all matches:

:echo getmatches()

To remove matches use matchdelete().

1

What about using this

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

You can match many number of patterns using this ...

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .