regex - 匹配括号之间的语法高亮

标签 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 当然计算 } 的第一次出现.如何制定此突出显示规则以跳过匹配的大括号?甚至多级这样。

最佳答案

为清楚起见,最好为每个语法区域指定一个定制名称,然后将其链接到标准颜色组。我已重命名您原来的区域 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/

相关文章:

php - Eclipse 语法突出显示 : trying to specify it for a new file extension, 并且它不起作用

python - 如何访问使用 anaconda 提示符安装的 vim?

vim - 如何在运行 vim 实例的不同 tmux Pane 之间复制和粘贴

sublimetext2 - 在 Sublime Text 2 中禁用语法高亮

php - 编写表达式以递归地提取括号之间的数据

vim - 如何在vim中更改特定的 'theme'颜色

php - Komodo编辑语法高亮

python - 从数据框中提取字符串

javascript - 用js替换一个字符串为空格的单词

javascript - 如何在 JavaScript 中使用支持 Unicode 的正则表达式?