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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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
Vim语法突出显示:重叠正则表达式_Vim_Syntax Highlighting_Vim Syntax Highlighting - Fatal编程技术网

Vim语法突出显示:重叠正则表达式

Vim语法突出显示:重叠正则表达式,vim,syntax-highlighting,vim-syntax-highlighting,Vim,Syntax Highlighting,Vim Syntax Highlighting,我试图为vim添加一些javascript语法高亮显示,但我一直遇到一个问题:当字符已经高亮显示时,所有其他正则表达式似乎完全忽略了它们 例如,我尝试为函数的参数列表添加语法高亮显示。在创建正确的rexex时,我禁用了function关键字的语法高亮显示,这样就更容易看到我的regex做了什么。我最终得到了以下工作正则表达式: syn match javaScriptArguments "[(=\:\s,]function.\{-}(\zs.\{-}\ze)" 但是,当我再次启用functio

我试图为vim添加一些javascript语法高亮显示,但我一直遇到一个问题:当字符已经高亮显示时,所有其他正则表达式似乎完全忽略了它们

例如,我尝试为函数的参数列表添加语法高亮显示。在创建正确的rexex时,我禁用了function关键字的语法高亮显示,这样就更容易看到我的regex做了什么。我最终得到了以下工作正则表达式:

syn match javaScriptArguments "[(=\:\s,]function.\{-}(\zs.\{-}\ze)"
但是,当我再次启用function关键字的高亮显示时,这一行就不再工作了。看起来vim只是排除了已经高亮显示的所有内容,因此它不会找到上面正则表达式的任何匹配项,即使它不会导致字符高亮显示两次


如何解决/解决此问题?

必须包含语法定义,以便它们与其他语法项匹配。在:help syn contains上查找所有可怕的详细信息


在您的情况下,您依靠的是通过\zs查看function关键字。根据我的经验,这肯定会引起问题,但一旦你使用contained,这可能就不必要了。一般来说,在不修改原始脚本的情况下扩展现有的语法定义是很困难的,我想这就是您要做的。请查看:help:syn containedin和:help:syn nextgroup。必须包含语法定义,才能在其他语法项中匹配。在:help syn contains上查找所有可怕的详细信息


在您的情况下,您依靠的是通过\zs查看function关键字。根据我的经验,这肯定会引起问题,但一旦你使用contained,这可能就不必要了。一般来说,在不修改原始脚本的情况下扩展现有的语法定义是很困难的,我想这就是您要做的。查看:help:syn containedin和:help:syn nextgroup。

非常感谢!根据您的提示,我创建了一个能够识别整个函数定义的正则表达式,使用contained和containedin参数,我可以识别单独正则表达式中的每个单独部分。是的,这正是大多数语法定义所做的。我很高兴这对你有帮助。如果您认为您的扩展语法通常是有用的,并且与其他Vim语法没有太大的偏离,那么您可以将您的修改发送给原始语法维护者;他列在文件头上。还请注意,易照在vim.org上为javascript提供了一种替代语法。这是一个好主意!我也看到了易照的另一种语法突出显示,但他也没有突出显示参数。我会把它寄给他,也许他也感兴趣。非常感谢!根据您的提示,我创建了一个能够识别整个函数定义的正则表达式,使用contained和containedin参数,我可以识别单独正则表达式中的每个单独部分。是的,这正是大多数语法定义所做的。我很高兴这对你有帮助。如果您认为您的扩展语法通常是有用的,并且与其他Vim语法没有太大的偏离,那么您可以将您的修改发送给原始语法维护者;他列在文件头上。还请注意,易照在vim.org上为javascript提供了一种替代语法。这是一个好主意!我也看到了易照的另一种语法突出显示,但他也没有突出显示参数。我会把它寄给他,也许他也感兴趣。