我正在尝试为虚拟和纯虚拟方法获得不同的颜色,就像这样
syn region cppVirtualPureMethod start="virtual" end="= 0;"
syn region cppVirtualMethod start="virtual" end="[;{]"
不幸的是,仅使用开始标识符执行选择,因此无法消除两种情况之间的歧义。是否有一些 vim 技巧来获得我需要的东西?
正如您已经发现的那样,:syn region
只考虑start=
匹配的部分。您必须使用:syn match
(可能使用跨行匹配的昂贵正则表达式)来包含区分端。
一般来说(考虑到您事先尝试过类似的事情),在 Vim 中很难做到如此精细的突出显示,Vim 的语法解析是为广泛的适用性和 80/20 正确性而设计的,而不是精确的语法表示。如果您真的需要以不同的视觉风格显示如此细微的细微差别(尤其是对于语法非常复杂的 C++),我宁愿使用带有适当解析器的 IDE 来处理完整的语言。