我知道vim的彩虹插件会为开括号和右括号着色,我知道vim可以突出显示匹配的括号。我希望vim在我目前所在的括号范围内强调所有内容。
例如:让|是当前光标位置,然后:
(a|bc (de fg))
会强调一切。
(abc (de |fg))
仅为(de fg)
加下划线。
这甚至可能吗?
答案 0 :(得分:7)
这场比赛看起来效果很好:
syn match Foo /([^(]*\%#.*)/
hi link Foo Underlined
您可以将它放在〜/ .vimrc或特定语言的语法文件中。
syn match Foo
- 根据正则表达式匹配语法组并将其命名为Foo
/([^(]*
- 匹配(
后跟无限量或0除(
以外的任何字符
\%#
- 匹配当前光标位置
.*
- 匹配任意数量的无限数量或0
)
- 匹配)
hi link Foo Underlined
- 将Foo组链接到带下划线
应该注意的是,这是一个不完美的解决方案,因为正则表达式不适合嵌套的子结构。 Rainbow Parenthesis通过添加多达13个递归级别来实现此目的,但它不提供无限递归。您可以使用我提供的正则表达式示例修改其13级递归,以完成任意数量的递归。我不确定可能对速度的影响。
答案 1 :(得分:4)
您可以在.vimrc
:
nmap <f12> m[%v%:sleep 350m<CR>`[
imap <f12> <Esc>m[%v%:sleep 350m<CR>`[a