Vim更改双大括号内文本的颜色

问题描述

我想更改双大括号内文本的颜色

像这样的 {{a + b}} ,但到目前为止,这是我唯一能够实现的目标:

syn match parens /[{}]/
hi parens ctermfg=red guifg=red

这并不是我想要的,我可以更改方括号的颜色 如果我尝试这样做根本不起作用

/{([^}]+)}}/

我该如何正确编写呢?

解决方法

我更习惯于在vim中“魔术化”正则表达式,因此我将使用它们来编写示例,但是您可以轻松地转换为vim支持的其他类型的正则表达式(请参见:help magic)。

如果我正确理解了您的问题,我认为您可以按照以下规则实现您想要的目标:

syntax match parens "\v\{\{.{-}\}\}"
highlight parens ctermfg=red guifg=red

此正则表达式由于. {{这些语法}} 与花括号内的任何字符匹配。语法{-}*等效,只是vim尝试匹配 {{}} 之间最小的字符。这样您就不会匹配 {{some}}示例{{text}} ,而不会匹配 {{some}} 示例 {{text}} 。如果要更详细地说明 {{}} 中可以匹配的内容,可以更改.