vim bundle安装
一、准备工作
安装Git(因为下面我们选择的插件管理器需要使用到它)
安装其他插件前首先需要选择一个Vim插件管理器,我这里选择的是Vundle,Vundle的工作过程中需要通过Git自动从远程创库同步插件安装包到本地仓库(Vundle的默认本地仓库位置是~/.vim/bundle/) 通过Git下载Vundle安装包:$ git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim 在~/.vimrc中添加Vundle的配置内容:
01.
1
set nocompatible " be iMproved, required
02.
2
filetype on " required
03.
3
04.
4
" set the runtime path to include Vundle and initialize
05.
5
set rtp+=~/.vim/bundle/Vundle.vim
06.
6
call vundle#begin()
07.
7
" alternatively, pass a path where Vundle should install plugins
08.
8
"call vundle#begin(
'~/some/path/here'
)
09.
9
10.
10
" let Vundle manage Vundle, required
11.
11
Plugin
'gmarik/Vundle.vim'
12.
12
13.
13
" plugin from http:
//vim-scripts.org/vim/scripts.html
14.
14
Plugin
'L9'
15.
15
" Git plugin not hosted on GitHub
16.
16
" Plugin
'git://git.wincent.com/command-t.git'
17.
17
" git repos on your local machine (i.e. when working on your own plugin)
18.
18
" Plugin
'file:///home/gmarik/path/to/plugin'
19.
19
" The sparkup vim script is in a subdirectory of
this
repo called vim.
20.
20
" Pass the path to set the runtimepath properly.
21.
21
" Plugin
'rstacruz/sparkup'
, {
'rtp'
:
'vim/'
}
22.
22
" Avoid a name conflict with L9
23.
23
" Plugin
'user/L9'
, {
'name'
:
'newL9'
}
24.
24
25.
25
" All of your Plugins must be added before the following line
26.
26
call vundle#end() " required
27.
27
filetype plugin indent on " required
28.
28
" To ignore plugin indent changes, instead use:
29.
29
"filetype plugin on
30.
30
"
31.
31
" Brief help
32.
32
" :PluginList - list configured plugins
33.
33
" :PluginInstall(!) - install (update) plugins
34.
34
" :PluginSearch(!) foo - search (or refresh cache first)
for
foo
35.
35
" :PluginClean(!) - confirm (or auto-approve) removal of unused plugins
36.
36
"
37.
37
" see :h vundle
for
more details or wiki
for
FAQ
38.
38
" Put your non-Plugin stuff after
this
line
View Code 有两种方式安装新插件,通过命令行参数的方式如:$ vim +PluginInstall +qall或者直接运行:$vim,然后按:PluginInstall进入命令模式,直到左下方状态栏出现Done!提示说明插件安装成功,退出再进入就可以使用我们在~/.vimrc中配置的插件了 安装ctags软件:$ yum install ctags
二、生成tags文件
为了可以利用Vim本身提供的tag功能来定位程序里面出现的宏定义和方法定义(源文件之间跳转),在你的工程根目录运行命令:$ ctags -R --language-force=c++ *,这里语言要指定为c++,如果指定为c则不会生成.h文件的tag。操作成功后在当前目录就可以发现一个tags文件了,在~/.vimrc中添加一行配置信息如:set tags=/opt/dev/4.4BSD-Lite/tags来告诉vim tag索引文件的位置。再次运行vim就可以通过按Ctrl+]来快速跳转到光标下方的函数或宏的定义处,查看代码非常方便。通过]+d可以在vim状态栏显示当前文件中定义的宏的内容(不用跳转)
三、按需添加插件
(1)显示目录树插件(NERDTree)
在~/.vimrc的Plugin段中添加一行安装配置:Plugin 'scrooloose/nerdtree' 在~/.vimrc里面修改该插件的打开命令按键映射:map <F4> :NERDTree<cr> 保存被修改的配置文件,重新运行vim,如:$ vim /opt/dev 按F4功能键即可调用该插件显示当前工作目录的目录树,按?或者帮助信息,按q退出该插件(当打开多个tab时可以通过gt或窗口index+gt在tab之间快速切换,按T以安静方式打开新tab即打开新tab后继续留在当前tab)
(2)文件查找插件(CtrlP)
在~/.vimrc的Plugin段中添加一行安装配置:Plugin 'kien/ctrlp.vim' 在~/.vimrc里面修改该插件的打开命令按键映射及配置:
1.
let g:ctrlp_map =
'<c-p>'
"hotkey Ctrl+p open ctrlp plugin
2.
let g:ctrlp_cmd =
'CtrlP'
3.
let g:ctrlp_working_path_mode =
'0'
"disable work path mode
保存被修改的配置文件,重新运行vim,如:$ vim /opt/dev 按Ctrl+p即可调用该插件(每次运行第一次打开需要稍微等一下,该插件对工作目录进行扫描创建缓存,如果目录结构有变化按F5进行缓存刷新,我找了下没有发现保存扫描缓存的功能),按ESC退出该插件(Ctrl+t在新tab中打开选中的文件);:CtrlPMRU 在最近使用最多的文件里面查找结果;:CtrlPBuffer在find buffer里面查找结果;按..进入上一级目录中
(3)函数名列表(CtrlPFunky),该插件是CtrlP插件的一个扩展,必须先装CtrlP
在~/.vimrc的Plugin段中添加一行安装配置:Plugin 'tacahiroy/ctrlp-funky' 在~/.vimrc里面修改该插件的命令按键映射及配置:
1.
map <F6> :CtrlPFunky<cr>
2.
let g:ctrlp_extensions = [
'funky'
]
3.
let g:ctrlp_funky_syntax_highlight =
1
保存被修改的配置文件,重新运行vim打开一个c源文件,按F6键即可看到当前文件的函数列表,上下键移动选择条目按回车即可跳到函数定义处
(4)源文件中函数、变量、结构体、宏等元素的列表(taglist)
在~/.vimrc的Plugin段中添加一行安装配置:Plugin 'vim-scripts/taglist.vim' 在~/.vimrc里面修改该插件的命令按键映射及配置:
1.
map <F5> :Tlist<cr>
2.
let Tlist_Show_One_File =
1
3.
let Tlist_Exit_OnlyWindow =
1
4.
let Tlist_Use_Right_Window =
1
5.
let Tlist_GainFocus_On_ToggleOpen =
1
保存被修改的配置文件,重新运行vim打开一个c源文件,按F5键即可在右边子窗口看到当前文件的个元素的列表,上下键移动选择条目按回车即可跳到函数定义处,F1查看帮助信息,在选择的对象上按<space>可以在状态栏看到各元素的定义;按减号(-)关闭一个节点,按*打开关闭的结点
四、后记
上面四个插件就是我当前阅读源代码的IDE配置,对于我来说已经足够满足我的工作需要了;由于这次时间仓促Vim里面还有很多人性化的配置及插件没来得及发现,随着我对Vim更深入的了解及在使用过程中遇到的新问题,还会有更多优秀的功能及插件,到时候再来分享。
为了方便的保存每次的工作状态及再次运行Vim的时候恢复上次工作状态需要在~/.vimrc中添加如下两行配置(也就是Vim的Session管理功能):
1.
map <F2> :mksession! ~/vim_session <cr> " Quick write session with F2
2.
map <F3> :source ~/vim_session <cr> " And load session with F3