在.vimrc中定义以下内容或在vim命令行中执行:
syn match ndbMethods "[^. \t\n\r]\@<=[_a-z][_a-zA-Z0-9]*(\@="
hi ndbMethods guibg=#222222
在活动缓冲区中使用C样式方法调用查看结果:
foo();
您将看到方法名称的首字符不匹配。
后向模式的目的是强制行的开头,文字
.
或空格在任何匹配方法的第一个字符之前。奇怪的是,使它为负前瞻(
\@<!
)似乎可行!有人会善良地解释为什么这种后视是不正确的吗?
最佳答案
已更新:在f
,向后看,您可能要检查[. \t\n\r]
,而不是[^. \t\n\r]
。因为当前,您说的是“某些字符之后没有出现的东西”,所以只有在达到o
时,才符合条件,因为f
确实不是这些字符之一。因此,您必须取消否定字符类,或者如发现的那样,否定后面的外观。
我认为您也对条款感到困惑。
\@<= positive lookbehind
\@<! negative lookbehind
\@= positive lookahead
\@! negative lookahead