如何使两个用户定义的高亮显示一起工作

时间:2013-10-18 14:06:48

标签: vim

我想强调Vim中的超长行(例如:https://stackoverflow.com/a/235970/1329844)以及尾随空格(例如:https://stackoverflow.com/a/4617156/1329844)。但是,每当我使用两个高光时,只应用最后一个。

我的.vimrc中有以下代码:

highlight OverLength ctermbg=0 ctermfg=197
match OverLength /\%>80v.\+/
highlight ExtraWhitespace ctermbg=0
match ExtraWhitespace /\s\+$/

当我打开文件时,只会突出显示尾随空格。如果我交换两个高亮/匹配对的顺序,则只突出显示超长线。我需要更改什么才能使两个模式匹配并突出显示?

2 个答案:

答案 0 :(得分:3)

:match命令只能有一个活动模式。如果两个高光使用相同的颜色,则可以将模式与\|组合。在这里,您必须使用两个备选命令之一::2match:3match,或者您可以使用(较新的)matchadd()函数,您可以在其中指定任意数字(> 3)作为(最后一个){id}参数。

:call matchadd('OverLength', '\%>80v.\+', 10, 4)
:call matchadd('ExtraWhitespace', '\s\+$', 10, 5)

答案 1 :(得分:2)

我认为,Ingos解决方案是首选,但是,你可以使用它:

:match MyCustomHighlight /\%(\s\+$\)\|\(\%>30v.\+\)/
:highlight MyCustomHighlight ctermbg=0 ctermfg=197