不太明白),就像他-6ren">
gpt4 book ai didi

Vim 语法文件...试图理解 "contains"

转载 作者:行者123 更新时间:2023-12-04 01:31:31 24 4
gpt4 key购买 nike

我正在尝试为我正在使用的某些自定义格式修补一个新的 vim 语法文件。大部分我都能理解,但是关键字“包含”给我带来了麻烦。

这里有没有人可以向我解释它的作用(我已经阅读了帮助 -> 不太明白),就像他在向一棵树解释一样。

最佳答案

一般来说,一个地方只能有一种语法高亮方法。因此,以类似 C 的语法为例,如果您定义一个区域以开始于左大括号 '{' 并结束于右大括号 '}',则该区域的语法突出显示将是相同的。
contains=允许您配置要包含在外部组中的其他语法高亮组。要遵循前面的示例,您可能需要 int即使在外部区域,也要突出显示。然后你可以有类似的东西:

syn keyword Keyword int
syn region BraceBlock start='{' end='}' contains=Keyword

稍后需要将项目添加到包含的关键字列表中是很常见的。有几种方法可以做到这一点。首先,您可以使用 contains=ALLcontains=ALLBUT,Error允许任何东西在一个区域内。其次,您可以使用 containedin将某些内容推送到另一个区域的包含中:
syn region BraceBlock start='{' end='}'
syn keyword Keyword int containedin=BraceBlock

第三,您可以将“包含”的任何内容定义为该组中的有效内容:
syn region BraceBlock start='{' end='}' contains=CONTAINED
syn keyword Keyword int contained

最后,您可以使用集群,这可以很容易地决定什么去哪里:
syn region BraceBlock start='{' end='}' contains=@MyCluster
syn keyword Keyword int
syn cluster MyCluster contains=Keyword
syn keyword Conditional if else
syn cluster MyCluster add=Conditional
" Now conditionals and keywords can appear in a BraceBlock

在不确切知道您想了解什么的情况下,我不知道还有什么可说的 - 您想达到什么目的以及是什么导致了您的问题?

关于Vim 语法文件...试图理解 "contains",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1819006/

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