在 .vimrc 文件中定义以下内容或在 vim 命令行中执行:
syn match ndbMethods "[^. \t\n\r]\@<=[_a-z][_a-zA-Z0-9]*(\@="
hi ndbMethods guibg=#222222
使用C风格的方法调用在活动缓冲区中查看结果:
foo();
你会发现方法名的初始字符不匹配。
意图是让lookbehind模式强制在任何匹配方法的第一个字符之前出现行首、文字"."或空格。
奇怪的是,将此设置为负向先行断言(
\@<!
)似乎有效!有没有人能够友好地解释一下为什么这个lookbehind是错误的?
[^\n]
将匹配任何字符,包括换行符。集合内的[\n]
始终将换行符添加到匹配项中,无论您是否在开头使用^
。为避免混淆,请始终使用等效于[\n]
的\_[]
变体。 - ZyX