Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex VIM语法突出显示匹配 < >我注意到C++函数没有用我的VIM样式来应用它们,所以我想简单地添加一个快速正则表达式匹配来查找紧跟其后的任何单词(并且作为语法。_Regex_Vim_Syntax Highlighting - Fatal编程技术网

Regex VIM语法突出显示匹配 < >我注意到C++函数没有用我的VIM样式来应用它们,所以我想简单地添加一个快速正则表达式匹配来查找紧跟其后的任何单词(并且作为语法。

Regex VIM语法突出显示匹配 < >我注意到C++函数没有用我的VIM样式来应用它们,所以我想简单地添加一个快速正则表达式匹配来查找紧跟其后的任何单词(并且作为语法。,regex,vim,syntax-highlighting,Regex,Vim,Syntax Highlighting,在我的.vim中,我将: syn match cppFun "\w+(?=\()" 这似乎可以正常工作,但vim抱怨出现了不匹配的\)。 然而,检查:highlight,我确实看到了cppFun的语法设置 我想也许vim正则表达式是反的,所以我试了一下 syn match cppFun "\w+\(?=(\)" 虽然它不再抱怨不匹配的paren,但我仍然没有在main.cpp中获得功能亮点 为了显示语法高亮显示,正则表达式应该是什么样子 这就是我用\w

在我的.vim中,我将:

syn match cppFun "\w+(?=\()"
这似乎可以正常工作,但vim抱怨出现了不匹配的
\)
。 然而,检查
:highlight
,我确实看到了cppFun的语法设置

我想也许vim正则表达式是反的,所以我试了一下

syn match cppFun "\w+\(?=(\)"
虽然它不再抱怨不匹配的paren,但我仍然没有在main.cpp中获得功能亮点

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

这就是我用
\w+(?=\()
测试的对象:


希望匹配
main
put
要匹配后跟
而不匹配
)的单词,请使用
\w\+\ze(

\ze
终止正则表达式的匹配部分。需要在
+
前面加上一个
\
,使其变魔术。(请参阅)


同样,在vim中,使用
\@=
完成。而不是使用
(?=…)
来匹配一个单词,后面跟着一个
),而不匹配
),请使用
\w\+\ze(

\ze
终止正则表达式的匹配部分。需要在
+
前面加上一个
\
,使其变魔术。(请参阅)

另外,在vim中,使用
\@=
完成。而不是使用
(?=…)

可以使用

\v\w+(\()@=
详细信息

  • \v
    -当量词和捕获/查找括号不需要反斜杠转义时,启用非常神奇的模式
  • \w+
    -一个或多个单词字符(字母、数字、下划线)
  • (\()@=
    ——一种积极的前瞻(
    (…)@=
    ),要求其模式(这里是一个
    字符)立即匹配到当前位置的右侧
您可以使用

\v\w+(\()@=
详细信息

  • \v
    -当量词和捕获/查找括号不需要反斜杠转义时,启用非常神奇的模式
  • \w+
    -一个或多个单词字符(字母、数字、下划线)
  • (\()@=
    ——一种积极的前瞻(
    (…)@=
    ),要求其模式(这里是一个
    字符)立即匹配到当前位置的右侧

试试这个:
语法匹配cppFun“\v\w+\s*\([^)]*\”
试试这个:
语法匹配cppFun“\v\w+\s*\([^)]*\”
int main(int argc, char** argv) {
    std::puts('Hello World');
    return 0;
}