匹配括号之间的语法高亮

时间:2012-10-14 09:13:21

标签: regex vim syntax-highlighting

说我在Vim打开了一个LaTeX文档,我想突出显示每一个

{\color{red} ... }

(这些点应该用来表示某些内容),也就是说,我想要{\color{red}},并突出显示这些内容之间的所有内容。我已经完成了

:syn region WarningMsg start=+{\\color{red}+ end=+}+

但我遇到的问题是,如果我写的是{\color{red} some{thing} important}之类的内容,那么只有{\color{red} some{thing}才会突出显示,因为Vim当然会计算}的第一次出现。如何制作此突出显示规则以便跳过匹配的大括号?甚至是多层次的。

1 个答案:

答案 0 :(得分:1)

为清楚起见,最好为每个语法区域指定一个定制名称,然后将其链接到标准颜色组。我已将您原来的地区重命名为redTeX

您需要定义第二个区域innerBrace,定义要忽略的大括号,并将此区域标记为透明。然后应将redTeX标记为包含透明区域,然后忽略该区域。

syn region innerBrace start=+{+ end=+}+ transparent contains=redTeX
syn region redTeX start=+{\\color{red}+ end=+}+ contains=innerBrace
hi link redTeX WarningMsg

请注意,在这种情况下,redTeX本身与innerBrace匹配的附加细微之处。我通过将innerBrace标记为包含redTeX来解决此问题。

希望有意义!