是否可以让vim强调我的光标当前所在的括号范围?

AME*_*AME 2 vim vim-syntax-highlighting

我知道有一个用于vim的彩虹插件,用于打开和关闭括号的颜色,我知道vim可以突出显示匹配的括号.我希望vim强调我目前所在的括号范围内的所有内容.

例如:让| 是当前的光标位置,然后:

(a|bc (de fg))
Run Code Online (Sandbox Code Playgroud)

会强调一切.

(abc (de |fg))
Run Code Online (Sandbox Code Playgroud)

只会强调(de fg).

这甚至可能吗?

Con*_*ner 7

这场比赛看起来效果很好:

syn match Foo /([^(]*\%#.*)/
hi link Foo Underlined
Run Code Online (Sandbox Code Playgroud)

您可以将它放在〜/ .vimrc或特定语言的语法文件中.

一步步:

syn match Foo - 匹配基于正则表达式的语法组并将其命名为Foo

/([^(]*- 匹配a (后跟无限量或0的任何字符除外(

\%# - 匹配当前光标位置

.* - 匹配任何字符的无限量或0

) - 匹配一个 )

hi link Foo Underlined - 将Foo组链接到Underlined

应该注意的是,这是一个不完美的解决方案,因为正则表达式不适合嵌套的子结构.Rainbow Parenthesis通过添加多达13个级别的递归来实现此目的,但它不提供无限递归.您可以使用我提供的正则表达式示例修改其13级递归,以完成任意数量的递归.我不确定可能对速度的影响.