vim - 是否可以让 vim 在我的光标当前所在的括号范围内加下划线?

标签 vim vim-syntax-highlighting

我知道 vim 有一个彩虹插件,它可以为左括号和右括号着色,我知道 vim 可以突出显示匹配的括号。我希望 vim 在我当前所在的括号范围内为所有内容加下划线。

例如:让|为当前光标位置,则:

(a|bc (de fg))

会强调一切。

(abc (de |fg))

只会在 (de fg) 下划线。

这可能吗?

最佳答案

这场比赛似乎很顺利:

syn match Foo /([^(]*\%#.*)/
hi link Foo Underlined

你可以把它放在你的 ~/.vimrc 或特定语言的语法文件中。

一步一步:

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

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

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

.* - 匹配无限量或 0 个任意字符

) - 匹配 )

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

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

关于vim - 是否可以让 vim 在我的光标当前所在的括号范围内加下划线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12161508/

相关文章:

vim - 许多 VIM 命令背后是否存在某种模式?

python - 为什么调用python的标签补全时会弹出tcl和c中的关键字?

vim - 如何避免Vim中大文件的语法突出显示?

python - 用于 python 的 vim 中的语法高亮显示

vim - 文件保存期间语法高亮随机消失

python - 在 Vimscript 中,是否可以访问语法荧光笔已知的信息?

c++ - 我如何使用 vim cindent 实现这一点?

vim - 配置 Vim 以使用 Xiki

intellij-idea - .vimrc 用于 IntelliJ Idea 的 vim 插件

linux - 如何在 Vim 中突出显示 Bash 脚本?