如何为虚拟和虚拟纯方法使用不同的颜色?

时间:2013-03-27 13:45:24

标签: c++ vim

我正在尝试为虚拟和纯虚拟方法获得不同的颜色,比如

syn region   cppVirtualPureMethod   start="virtual" end="= 0;"
syn region   cppVirtualMethod   start="virtual" end="[;{]"
遗憾的是,选择仅使用起始标识符执行,因此无法消除两种情况之间的歧义。是否有一些vim技巧可以获得我需要的东西?

1 个答案:

答案 0 :(得分:1)

正如您已经发现的那样,:syn region仅考虑匹配的start=部分。您必须使用:syn match(可能使用跨行匹配的昂贵的正则表达式)来包含差异化结束。

一般而言(考虑到你已经尝试something similar beforehand),在Vim中很难做到这种精心设计的突出显示,其语法解析是为广泛的适用性和80/20正确性而设计的,而不是精确的语法表示。如果你真的需要在不同的视觉风格中显示这种细微的细微差别(特别是对于具有非常复杂语法的C ++),我宁愿使用带有适当语法的IDE作为完整语言。