我在《把vim配置成顺手的python轻量级IDE(一)》中介绍了一些vim的插件,那些插件对于应付简单的实验已经已经能够比较顺手,但是在实际使用中发现在看代码的时候实在是虐心。因为别人的代码一般都是一个工程涉及到多个文件,函数调用关系也比较复杂,这就需要更好的工具来协助我们。因此本文将记录我在之前的配置中新增的几个插件。
ctrlp.vim
这个插件是模仿Sublime Text 的ctrl + p
功能,在工程中快速定位某个文件。
安装
这个插件托管在Github上的,可以利用Vundle管理,在.vimrc
文件中添加:
Plugin 'ctrlpvim/ctrlp.vim'
然后重启vim,使用命令:PluginInstall
,就可以自动安装了。
配置及使用
这个插件安装完成后不需要额外的配置就可以使用基本功能,在NORMAL
模式同时按下ctrl + p
就可以调用插件:
接下来输入想查找的文件名,支持模糊匹配,意味着只需要记住该文件的一部分或几个字母就可以,例如我输入cmake
,结果如下:
这个插件我我使用的不多,所以只介绍基础的用法,如需要更高的用法,可以去项目主页查看文档。
ctrlsf.vim
这个插件是模仿的Sublime Text的ctrl + shift + f
功能。可以在工程中全局搜索某个特定的字符,个人感觉比vimgrep要好用很多。
安装
这个插件需要ack
的支持,因此在安装插件之前需要安装ack,mac用户可以使用Homebrew来安装,在终端使用下面的命令就可以安装ack:
brew install ack
对于Linux,我并没有实践,因此不多说,不过我想也该也可以利用类似apt-get
之类的包管理工具安装。
安装完ack
,就可以用Vundle
安装ctrlsf.vim
了:
Plugin 'dyng/ctrlsf.vim'
配置及使用
安装完成后,插件会自动读取系统变量而不需要手动设置ack的路径。
使用命令:CtrlSF
名就可以进行搜索,例如我需要查找print
:
:CtrlSF print
插件会自动分割一个窗口来显示搜索结果:
左边的窗口就是查询结果,文件之间用一个空行隔开,每个文件结果的第一行是文件的绝对路径,接着是出现的行及改行的内容。选择其中一行后按不同的键会有不同的行为:
-
Enter
:跳转到选择的行; -
t
: 在新建标签中打开该文件; -
p
: 在预览窗口中打开; -
q
: 退出CtrlSF
窗口。
CtrlSF.vim
也可以调用Quickfix
来显示搜索结果。只是命令变成了:CtrlSFQuickfix
,但是使用Quickfix
来显示搜索结果,就只能使用Enter
跳转到该文件了,t、p、q
等功能就不支持了:
最前面的蓝色文字是文件的绝对路径,中间的灰色文字是出现的行和列,最后面的白色字体是改行的内容。
如果觉得每次搜索都需要输入:CtrlSFQuickfix
或:CtrlSF
很不方便,可以添加一个快捷键来在命令行自动插入,在.vimrc
文件最后添加内容:
map f <Plug>CtrlSFPrompt
map F <Plug>CtrlSFQuickfixPrompt
这样在NORMAL
模式下按f/F
就可以自动在命令行添加相应的命令。
tagbar
几乎所有IDE都有显示文件中的类、函数、变量的功能,这个功能对于阅读代码非常方便,tagbar就是给vim添加该功能。它是基于ctags的,支持很多语言,如果默认不支持还可以手动添加。
安装
首先需要安装依赖的ctags,同样可以使用Homebrew安装:
brew install ctags
然后利用Vundle安装安装tagbar,安装步骤和ctrlsf.vim是相同的,在.vimrc
文件中添加一行:
Plugin 'majutsushi/tagbar'
然后重启vim:PluginInstall
。
配置及使用
安装完成后不需要特别的配置就可以使用,使用方法也很简单,使用命令
:TagbarToggle
就可以打开和关闭tagbar,效果如图:
右边就是tagbar,把光标移动到蓝色字体上按
o
可以打开和关闭相应的类别。为了方便,建议绑定快捷键来打开和关闭tagbar:
map <F3> :TagbarToggle<CR>
vim-airline和vim-airline-themes
以上的三个插件都是功能性的,从接下来的3个插件就是用于美化的,是为了让vim看起来更舒服,撸代码的时候也能有一个比较好的心情。在上一篇中我介绍了一个状态栏增强的插件vim-powerline
,虽然比原生状态栏要强上很多,但是打补丁的字体一直没有配置成功,没有得到官方的效果,而且配置和安装配置过程比较繁琐,所以当我发现vim-airline
后就果断弃用了。
vim-airline
和vim-airline-themes
出自于同一作者,后者可以为前者更换显示的主题。vim-airline
拥有vim-powerline
的全部功能,而且更美观,能和很多插件深度整合:
vim-bufferline, fugitive, unite, ctrlp, minibufexpl, gundo, undotree, nerdtree, tagbar, vim-gitgutter, vim-signify, quickfixsigns, syntastic, eclim, lawrencium, virtualenv, tmuxline, taboo.vim, ctrlspace and more.
安装
这两个都可以使用Vundle安装:
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
如果需要得到比较好的显示效果,仍然需要安装vim-powerline
的打过补丁的字体,下载地址。下载完成后运行install.py
就可以自动全部安装。
配置及使用
安装完成后如果不做任何配置的效果如下:
从左到右依次是:vim模式、文件名、和tagbar深度整合得到的光标所处函数名、文件类型、编码类型、光标所处位置占比、光标所在行号和总行数、光标列数。
要显示需要在.vimrc
中添加:
let g:airline_powerline_fonts = 1
同时,如果是在终端或iterm中使用Vim,需要设置终端或iterm的字体为powerline字体才能正确显示特殊字符,如果是在macvim中使用则还需要在.vimrc
中添加使用set guifont = *
设置字体为powerline字体。效果如下如下:
最顶部显示的是当前打开的buffer,默认是关闭的,可以通过下面的配置启用:
" 是否启用顶部tabline
let g:airline#extensions#tabline#enabled = 1
" 顶部tabline显示方式
let g:airline#extensions#tabline#left_sep = ' '
let g:airline#extensions#tabline#left_alt_sep = '|'
airline有很多主题可供选择,可以去项目主页选择喜欢的主题,然后在.vimrc
中添加如下命令来设置主题:
let g:airline_theme="你的主题"
rainbow_parentheses.vim
这个插件的功能很简单,只是为括号添加颜色。
安装
使用Vundle安装:
Plugin 'kien/rainbow_parentheses.vim'
配置及使用
在.vimrc
中添加如下配置:
let g:rbpt_colorpairs = [ ['brown', 'RoyalBlue3'], ['Darkblue', 'SeaGreen3'], ['darkgray', 'DarkOrchid3'], ['darkgreen', 'firebrick3'],['darkcyan', 'RoyalBlue3'],['darkred', 'SeaGreen3'],['darkmagenta', 'DarkOrchid3'],['brown', 'firebrick3'],['gray', 'RoyalBlue3'],['black', 'SeaGreen3'],['darkmagenta', 'DarkOrchid3'],['Darkblue', 'firebrick3'],['darkgreen', 'RoyalBlue3'],['darkcyan', 'SeaGreen3'],['darkred', 'DarkOrchid3'],['red', 'firebrick3']]
let g:rbpt_max = 16
au VimEnter * RainbowParenthesesToggle
au Syntax * RainbowParenthesesLoadRound
au Syntax * RainbowParenthesesLoadSquare
au Syntax * RainbowParenthesesLoadBraces
效果如下: