vim正则表达式&突出显示语法:查找匹配并忽略其中的子匹配

时间:2013-03-01 14:11:42

标签: vim vim-syntax-highlighting

我正在尝试在VIM中编写语法高亮显示器。你如何在另一场比赛中突出显示一场比赛?

为了找到每个匹配项,我创建了两条syn match行,这些行在匹配项分开的情况下工作。

syn match celString "^xpath=.\{-};"      -> matches "xpath=.........;"
syn match celComment "\${.\{-}}"         -> matches "${LIB_METADATA};"

highlight syntax results - first line has separated matches, while second line has overlapping matches

  • xpath字符串的第一行是粉红色,${..}字符串的第一行是蓝色。

  • xpath字符串的第二行是粉红色,但该字符串中包含的${..}将被忽略。

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

我很感激你的想法。

1 个答案:

答案 0 :(得分:5)

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

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

这里的定义顺序无关紧要。有关详细信息,请参阅:help :syn-contains