我正在为一个文件编写一个vim语法高亮显示脚本,该文件使用*
来表示注释的开头,除非被{}
包围。即。
* This is a comment, bellow is math
{ x_variable * y_variable + 10.0 }
我想只突出括号,忽略内部注释突出显示,同时仍然保持数字突出显示。
到目前为止,我有:
syn match mathSym "[{}]"
syn region mathRegion start=+{+ send=+}+ contains=numberHi
syn match commentHi "\*.*$" display contains=@Spell
hi link commentHi Comment
hi link mathSym Statement
hi link mathRegion Normal
我不确定这是否是正确的方法。它似乎忽略*
作为注释,并提供数字突出显示,但没有突出显示括号。
我试过
region mathRegion start=+{+ send=+}+ contains=numberHi, mathSym
但最终会将文件中的所有突出显示设置为Normal
答案 0 :(得分:0)
您的问题缺少numberHi
内容,但这应该可以解决问题:
syn region mathRegion matchgroup=mathSym start=+{+ end=+}+ contains=numberHi,mathSym
syn match commentHi "\*.*$" display contains=@Spell
hi link commentHi Comment
hi link mathSym Statement
mathSym
突出显示开头和结尾,而不是matchgroup=mathSym
的单独匹配。mathRegion
与Normal
相关联;只需将它用于结构。x * y
内的mathRegion
不匹配,因为此处未包含{{1}}。我没有看到任何问题。PS:你知道SyntaxAttr.vim - Show syntax highlighting attributes of character under cursor插件吗?在编写语法时,这是一个很好的帮助。