【发布时间】:2013-02-24 13:10:17
【问题描述】:
所以,我到处寻找一个好的彩虹括号插件,它可以为不同级别的括号提供不同的颜色。我真的很喜欢couple that I've found,因为它们在可定制性方面都做得很好,而highlighting the right thing。它支持的不仅仅是括号;人字形、大括号和方括号都被突出显示,我真的很喜欢。
好像有quite a few plugins for this!;我目前正在使用 oblitum,因为他针对深色背景进行了优化(我经常直接在 shell 中工作)。
因此,按照 github 上关于该插件的提示,我的.vimrc 中有“始终在线”的 sn-p。但是,当 always on 块高于“启用语法”时,它不会显示 {} 为 cpp 文件突出显示。当 always on 块低于syntax enable 时,折叠不起作用。我认为是插件的性质使它做到了这一点;它通过文件并添加着色信息。我注意到,如果我在加载文件后使用命令:syntax enable,但它不能识别折叠,那么它确实识别折叠。但在这一点上,它消除了彩虹括号放在它上面的颜色。
在我的.vimrc 中,我有以下相关行:
syntax enable
set foldmethod=syntax
set foldenable
set foldlevel=100
let g:rainbow_operators=2
au FileType c,cpp,objc,objcpp call rainbow#activate()
我认为,通过查看 vim 附带的语法文件,例如 c.vim,您可以看到某些块被注释为折叠。我敢打赌,如果您可以根据它编写一个正则表达式,您就可以将字符识别为句法组。然后你可以为它定义一个配色方案。其实rainbow plugin其实是在调用“syn region”命令,所以我觉得这条路线很可行,只是我对vim脚本不太了解。
谁能帮我修改插件或想出一个脚本或实现两者的东西?
【问题讨论】:
-
我建议将
rainbow#activate()更改为rainbow#load()。activate()有时会丢失重新加载突出显示,load()在需要时强制重新加载突出显示。在我的.vimrc我使用set foldmethod=marker、syntax on并使用它“波纹管”。我对折叠没有任何问题... -
那么,您如何拥有 foldmethod=marker 并同时使用 C++?
-
啊,如果您设置 foldmarkers={,} 它会为函数和类定义执行此操作。但是 cmets 呢?
-
我觉得不需要太多的折叠。我也没有和他们玩太多。
-
Aww :/ 好吧,我只是想让它完美地工作。如果您没有注意到,有多个与您类似的插件,但没有人费心解决这个问题,这就是为什么我觉得在这里提出它是合适的。我想唯一的另一种方法是将您的插件合并到语法突出显示中,以便默认情况下发生着色 []{}(),或者修改 vim 中的任何语法设置,以便它们用于折叠用五颜六色的 {}()[]。后一种方式听起来更好......