假设我在 Vim 中打开了一个 LaTeX 文档,我想突出显示
{\color{red} ... }
(点应该象征一些内容),也就是说,我想要
{\color{red}
, }
以及这些之间的所有内容都突出显示。这是我做过的:syn region WarningMsg start=+{\\color{red}+ end=+}+
但我有一个问题,如果我写的东西像
{\color{red} some{thing} important}
,那么就只有 {\color{red} some{thing}
它被突出显示,因为 Vim 当然计算 }
的第一次出现.如何制定此突出显示规则以跳过匹配的大括号?甚至多级这样。
最佳答案
为清楚起见,最好为每个语法区域指定一个定制名称,然后将其链接到标准颜色组。我已重命名您原来的区域 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
.希望这是有道理的!
关于regex - 匹配括号之间的语法高亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12880805/