一个插件包往往具备多种功能,每个文件根据Vim的路径约定会放置到不同的目录下,通用插件放到plugin下,语法高亮插件放到syntax下,自动加载插件放到autoload下,文件类型插件放到ftplugin下,编码格式插件的放到indent下......如果你是重度插件用户,你会发现在.vim主目录下会有一堆文件夹,无论是你想要安装新插件,还是想删除旧插件,都非常麻烦,你不得不在每个文件夹下找相关的vim文件。
pathogen是管理插件的插件,主要用来解决上述问题。pathogen在.vim
目录下建立bundle文件,所有的插件都会在该目录下管理。当Vim启动时,会自动执行runtimepath(rtp)列表中所包含文件夹下的vim脚本,pathogen会在启动时把./vim/bundle
下的文件夹中的插件按照一定顺序递归加载到rtp中,这样Vim启动时,通过pathogen管理的插件就生效了。
有了pathogen之后,一般.vim
文件夹下只有三个文件夹:autoload、bundle和doc,其他插件将被安装在bundle文件夹下。
.vim
文件夹下建立autoload和bundle目录;.vimrc
文件中增加如下代码:call pathogen#infect().
新插件安装到bundle目录下后,如果插件中包含doc,则需要在Vim中运行:Helptags
来生成在线帮助tags。
NERDTree是Vim最常用的插件之一,可以在Vim运行时显示目录和文件结构,类似TextMate左侧的文件浏览器,但操作起来更为方便,你可以在手不离开键盘的情况下快速浏览文件,并在文件和文件夹之间进行切换。
.vim/bundle
目录;git clone git://github.com/scrooloose/nerdtree.git;
:Helptags
来生成NERDTree的在线帮助tags。 打开Vim,输入:NERDTree
,即可呼出执行Vim命令的当前目录的文件目录。
NERDTree提供了丰富的键盘操作方式来浏览和打开文件,我简单介绍一些常用的快捷键:
o打开关闭文件或者目录,如果是文件的话,光标出现在打开的文件中;
go效果同上,不过光标保持在文件目录里,类似预览文件内容的功能;
i和s可以水平分割或纵向分割窗口打开文件,前面加g类似go的功能;
t在标签页中打开;
T在后台标签页中打开;
p到上层目录;
P到根目录;
K到同目录第一个节点;
J到同目录最后一个节点;
m显示文件系统菜单(添加、删除、移动操作);
?帮助;
q关闭。
Command-T是一个基于Ruby和C扩展实现的快速文件浏览的插件,类似TextMate的Go to File(Command+T呼出)功能,或Eclipse的Open Resource(Command+Shift+r)功能,可以通过模糊匹配快速定位并打开文件。
~/.vim/bundle
目录下创建文件夹command-t;:UseVimball ~/.vim/bundle/command-t
;进入ruby目录下编译C扩展(当然你需要安装ruby)
cd ~/.vim/bundle/command-t/ruby/command-t ruby extconf.rb make
输入:CommandT可进入文件快速定位功能,如图所示:
:CommandTBuffer
,可以浏览缓冲区的文件,并重新打开。操作方式同上。 Vim版本需要支持ruby扩展。我们可以在Vim中输入:ruby 1
检查,如果出现E319: Sorry, the command is not available in this version
就表示不支持。
如果出现上述情况,我们就需要自己去编译能够支持ruby的Vim,嫌麻烦的话可以直接安装vim-nox,自带Ruby支持,在Ubuntu下安装命令如下:sudo apt-get install vim-nox
。
执行ruby extconf.rb
命令时如果出现找不到mkmf包的情况,说明你需要安装ruby-dev的包,在Ubuntu下安装命令如下:sudo apt-get install ruby1.8-dev
。
Powerline是Vim的一个非常漂亮的状态栏插件,安装了Powerline之后,Vim底部将会出现一个增强型状态栏,当Vim处于NORMAL、INSERT、BLOCK等状态时,状态栏会呈现不同的颜色,同时状态栏还会显示当前编辑文件的格式(uft-8等)、文件类型(java、xml等)和光标位置等,喜欢的就装。
如图所示:
.vim/bundle
目录;git clone git://github.com/Lokaltog/vim-powerline.git;
在.vimrc
中设置状态栏主题
"powerline{ set guifont=PowerlineSymbols\ for\ Powerline set nocompatible set t_Co=256 let g:Powerline_symbols = 'fancy' "}