gpt4 book ai didi

Vim 语法高亮 : overlapping regex

转载 作者:行者123 更新时间:2023-12-02 01:16:37 27 4
gpt4 key购买 nike

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

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

syn match javaScriptArguments "[(=\:\s,]function.\{-}(\zs.\{-}\ze)"

但是,一旦我再次启用 function 关键字的突出显示,这一行就不再起作用了。似乎 vim 简单地排除了已经突出显示的所有内容,因此它不会找到上面正则表达式的任何匹配项,即使它不会导致字符被突出显示两次。

我该如何解决/解决这个问题?

最佳答案

语法定义必须被包含,以便它们在其他语法项中匹配。在 :help syn-contains 中找到所有可怕的细节。

在您的情况下,您依赖于通过 \zs 对“function”关键字的先行查找。根据我的经验,这必然会导致问题,但一旦您使用 contained 可能就没有必要了。一般来说,如果不修改原始脚本(我想这就是你打算做的),很难扩展现有的语法定义。看看 :help :syn-containedin:help :syn-nextgroup

关于Vim 语法高亮 : overlapping regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10617237/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com