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).
这甚至可能吗?
这场比赛看起来效果很好:
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级递归,以完成任意数量的递归.我不确定可能对速度的影响.