在vim中设置多个高亮规则

在vim中设置多个高亮规则

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

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

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

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

答案1

单程:

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 使用,因此如果你使用它就会发生冲突。

答案2

使用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()

答案3

那么使用这个

:sy[ntax] 匹配 {组名} [{选项}] [excludenl] {模式} [{选项}]

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

您可以使用这个来匹配多种图案...

相关内容