繁体   English   中英

VIM 语法高亮匹配

[英]VIM syntax highlight matching

我注意到 C++ 函数没有通过我的 vim 样式将任何样式应用于它们,所以我认为添加一个快速的正则表达式匹配来查找任何紧跟一个 (,并将其计为语法的单词会很简单。

在我的 .vim 中,我输入了:

syn match cppFun "\w+(?=\()"

这似乎适用于其他正则表达式匹配器,但 vim 抱怨不匹配的\\) 但是,检查:highlight ,我确实看到语法 cppFun 正在为它设置一些东西。

我想也许 vim 正则表达式是向后的,所以我尝试了这个

syn match cppFun "\w+\(?=(\)"

虽然它不再抱怨不匹配的括号,但我仍然没有在我的 main.cpp 中获得功能突出显示。

为了让语法高亮显示,正则表达式应该是什么样的?

这是我用\\w+(?=\\()

int main(int argc, char** argv) {
    std::puts('Hello World');
    return 0;
}

期望匹配mainputs

要匹配后跟(而不匹配(的单词,请使用\\w\\+\\ze(

\\ze终止正则表达式的匹配部分。 +需要在前面加上\\以使其变得神奇。 (见:帮助魔法)。

vim 中的正向前瞻也是通过\\@= 不与(?=...)

您可以使用

\v\w+(\()@=

细节

  • \\v - 当量词和捕获/环视括号不需要反斜杠转义时启用非常神奇的模式
  • \\w+ - 一个或多个单词字符(字母、数字、下划线)
  • (\\()@= - 一个正向前瞻( (...)@= ),它需要它的模式(这里是一个( char))立即匹配到当前位置的右侧。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM