我有cpp的语法高亮来突出显示STL算法,一行是
syn keywork cppSTL find
我的问题是,在我正在工作的项目中,有许多类使用名为find的方法进行突出显示,我希望它仅针对STL调用突出显示.
所以我决定将上一行更改为:
syn match cppSTL /[^.>:]\<find\>/ms=s+1
syn match cppSTL /\<std::find\>/ contains=cppScope
syn match cppScope /::/
hi clear cppScope
它大部分时间都有效.但是如果在这行中失败:
vector<string>::iterator i = find(find(x.begin(), x.end(), val), x.end(), term);
^^^^
第一个发现正确突出显示,但第二个发现失败.我对vim正则表达式的有限知识说它应该匹配,但我无法弄清楚它为什么不匹配.
最佳答案 这可能就是你要找的东西.它突出显示在包含::之前的行的所有单词.
syn match cppSTL /\(::.*\)\@<=\<find\>/
如果这不是你要求的,请告诉我.