我正在为 Vim 中的一种语言(还没有)编写语法高亮文件。
与我遇到的问题类似的问题是在 Python 中突出显示列表:我希望列表的元素正常突出显示,假设它们是语言允许在这样的列表中的类型,而列表的结构(即 [ , ]
应该以自己的颜色突出显示。
目前我使用
syn region myList start='\[' end=']' transparent contains=myList,myDelimiter,myNumber,myString
syn match myDelimiter ',' contained
myList
包含自身以允许嵌套列表(因此合法的额外 ]
结束标记)而不会破坏区域。但是,由于它是透明的(以允许突出显示其他合法组(在此示例中为 myNumber
和 myString
)),因此 [
开始和 ]
结束括号保持不突出显示。myDelimiter
组可以被认为是一种至少突出显示逗号的解决方法(尽管如果没有结构的其余部分,即开始 [
和结束 ]
则毫无意义)。将 [
和 ]
添加到 myDelimiter
模式中,如下所示:syn match myDelimiter ',\|\[\|]' contained
打破
myList
区域并使其在文件的不相关部分激活(在任何列表之外,从而打破列表中不允许的元素的其他语法高亮。我认为问题是结束不再被视为结束,但是跨越到文件中最后一个数组的大数组中的分隔符)。我尝试将
matchgroup=myList
添加到 syn region myList ...
(并确保它在我的配色方案中具有相应的 hi myList ctermfg=red
条目),但它没有任何改变。有没有办法来解决这个问题?
最佳答案
您需要添加 matchgroup=myListContainer
到您的区域定义,然后您可以突出显示这个新组:
:hi myListContainer guifg=red
您可以为您的
matchgroup
使用任何其他组名称,但我认为它不应该与您链接到的主要组相同。请看例子here .
关于vim - 语法在 Vim 中突出显示透明区域的开始和结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31678299/