使用关键字启动syn区域

时间:2013-03-20 12:15:53

标签: vim

我想启动一个带有“virtual”的区域来突出显示具有不同颜色的所有虚拟方法,但是在cpp.vim文件中已经将虚拟方法定义为关键字,从不执行区域匹配。我尝试了以下

syn region   cVirtualMethod   start="virtual" end=";" contains=cppType
hi cVirtualMethod ctermfg=red

但它不起作用。但是,如果我从cppType中删除虚拟,但它突出显示整行(公平,我更喜欢方法名称,但它也很好)。

有没有办法让cpp.vim虚拟高亮显示(所以虚拟会以绿色结束)并突出显示方法名称?

2 个答案:

答案 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电话

添加autocmd