摘要
本文介绍一个括号匹配增强工具 —— rainbow, 对于读、写 Lisp
或者各种括号横飞的语言,非常高效.
简介
众所周知,最复杂的代码都是由一堆乱七八糟的括号组成。这款插件通过以不同的颜色展示不同层次的括号,致力于帮助你阅读这样的复杂代码(Copy自插件官网).
先睹为快
lisp(注意配对括号的颜色):
更多语言的预览效果,请移步 https://github.com/luochen1990/rainbow/blob/demo/more.md
安装
Note: 请确保已经正确安装了 Pathogen
插件,如果没有安装,请参考 Hacking Vim: 插件管理器Pathogen(02)
本篇文章的代码在 https://github.com/NsLib/blog-vim-proj/tree/rainbow
cd ~/.vim/bundle
git clone https://github.com/luochen1990/rainbow --depth=1
rm -rf ~/.vim/bundle/rainbow/.git
配置
这里给出的是我的配置,可以根据自己的喜好定制:
" rainbow 对于不同的括号,渲染成不同颜色
let g:rainbow_active = 1
let g:rainbow_operators=2
let g:rainbow_conf = {
\ 'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick'],
\ 'ctermfgs': ['lightgray', 'lightblue', 'lightmagenta', 'lightcyan'],
\ 'operators': '_,_',
\ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold'],
\ 'separately': {
\ '*': {},
\ 'lisp': {
\ 'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick', 'darkorchid3'],
\ 'ctermfgs': ['darkgray', 'darkblue', 'darkmagenta', 'darkcyan', 'darkred', 'darkgreen'],
\ },
\ 'vim': {
\ 'parentheses': [['fu\w* \s*.*)','endfu\w*'], ['for','endfor'], ['while', 'endwhile'], ['if','_elseif\|else_','endif'], ['(',')'], ['\[','\]'], ['{','}']],
\ },
\ 'tex': {
\ 'parentheses': [['(',')'], ['\[','\]'], ['\\begin{.*}','\\end{.*}']],
\ },
\ 'css': 0,
\ 'stylus': 0,
\ }
\}
下面的说明摘自官网:
- ‘guifgs’: GUI界面的括号颜色(将按顺序循环使用)
- ‘ctermfgs’: 终端下的括号颜色(同上,插件将根据环境进行选择)
- ‘operators’: 描述你希望哪些运算符跟着与它同级的括号一起高亮(见vim帮助 :syn-pattern)
- ‘parentheses’: 描述哪些模式将被当作括号处理,每一组括号由两个vim正则表达式描述
- ‘separately’: 针对文件类型(由&ft决定)作不同的配置,未被单独设置的文件类型使用
*
下的配置,值为0
表示仅对该类型禁用插件 - 省略某个字段以使用默认设置
总结
这个插件主要用来提升我们读代码的效率,更容易的看清楚括号间的关系,一句话,谁用谁知道 XD