0

我正在尝试为虚拟和纯虚拟方法获得不同的颜色,就像这样

syn region   cppVirtualPureMethod   start="virtual" end="= 0;"
syn region   cppVirtualMethod   start="virtual" end="[;{]"

不幸的是,仅使用开始标识符执行选择,因此无法消除两种情况之间的歧义。是否有一些 vim 技巧来获得我需要的东西?

4

1 回答 1

1

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

一般来说(考虑到您事先尝试过类似的事情),在 Vim 中很难做到如此精细的突出显示,Vim 的语法解析是为广泛的适用性和 80/20 正确性而设计的,而不是精确的语法表示。如果您真的需要以不同的视觉风格显示如此细微的细微差别(尤其是对于语法非常复杂的 C++),我宁愿使用带有适当解析器的 IDE 来处理完整的语言。

于 2013-03-27T14:13:34.430 回答