我想启动一个带有“virtual”的区域来突出显示具有不同颜色的所有虚拟方法,但是在cpp.vim文件中已经将虚拟方法定义为关键字,从不执行区域匹配。我尝试了以下
syn region cVirtualMethod start="virtual" end=";" contains=cppType
hi cVirtualMethod ctermfg=red
但它不起作用。但是,如果我从cppType中删除虚拟,但它突出显示整行(公平,我更喜欢方法名称,但它也很好)。
有没有办法让cpp.vim虚拟高亮显示(所以虚拟会以绿色结束)并突出显示方法名称?
答案 0 :(得分:1)
语法关键字始终优先于区域,因此无法将virtual
作为语法关键字删除。
您可以通过为区域开始定义突出显示组来维持突出显示(而不是结束;这是反向参数顺序的原因):
:syn region cVirtualMethod end=";" matchgroup=cppType start="\<virtual\>"
然而,整个内部区域将突出显示。为避免这种情况,您可以添加仅包含方法名称的包含:syn-match
,将其包含在上述区域中,并将:highlight
放在该区域而不是区域。
答案 1 :(得分:0)
你可以测试这是否适合你?
hi! virtualMethod ctermfg=red
call matchadd("virtualMethod", "virtual.*;")
如果有,您可以为matchadd
电话