Vim正则表达式和语法高亮:查找匹配项并忽略其中的子匹配

3
我正在尝试在VIM中编写语法高亮器。如何突出显示一个匹配项中的另一个匹配项?
为了找到每个匹配项,我创建了两个syn match行,这些行只适用于匹配项是分开的情况。
syn match celString "^xpath=.\{-};"      -> matches "xpath=.........;"
syn match celComment "\${.\{-}}"         -> matches "${LIB_METADATA};"

高亮语法结果-第一行有分离的匹配,而第二行有重叠的匹配

  • 第一行中,xpath字符串为粉色,${..}字符串为蓝色。

  • 第二行中,xpath字符串为粉色,但该字符串内部包含的${..}被忽略了。

我尝试过更改syn match行的顺序,但这没有任何效果。

我希望听到你的想法。


我的猜测是使用分组吗?http://vimdoc.sourceforge.net/htmldoc/usr_44.html#44.6 - Aram Kocharyan
1个回答

5

默认情况下,Vim仅将语法组应用于尚未分配语法的文本。要指定一个组可以包含其他组,请使用contains=...属性:

:syn match celString "^xpath=.\{-};" contains=celComment

定义的顺序在这里并不重要。更多信息请参见:help :syn-contains

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接