在.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

08-27 13:46