在vim中设置多个突出显示规则


16

我试图通过将规则添加到我的.vimrc中来设置规则,以突出显示尾随空格和超过一定长度的行:

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

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

但是,似乎只能取其最后一个。我找不到让它们同时工作的方法。

Answers:


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]匹配{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.\+/

您可以使用此匹配多个模式...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.