【发布时间】:2015-10-19 03:02:13
【问题描述】:
我正在用 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 条目),但它没有任何改变。
有没有办法解决这个问题?
【问题讨论】:
-
:help :syn-region并检查matchgroup=定义。看看有没有帮助。 -
谢谢,但正如我在倒数第二段中提到的那样,我试过了,不幸的是它不起作用。
标签: vim highlight delimiter vim-syntax-highlighting