【Vim】使用Vundle管理配置Vim基本插件

Vundle

项目托管在github上https://github.com/gmarik/vundle
其特色在于使用git来管理插件,更新方便,支持搜索,一键更新,从此只需要一个vimrc走天下。

在vimrc文件中添加如下内容来启用vundle管理vim插件的功能:

set rtp+=$VIM/vimfiles/bundle/vundle/  
call vundle#rc('$VIM/vimfiles/bundle/')  
Bundle 'gmarik/vundle'

如果是linux系统,可以如下添加:

set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Bundle 'gmarik/vundle'

Vundle命令

  • :BundleList -列举出列表中(.vimrc中)配置的所有插件
  • :BundleInstall -安装列表中全部插件
  • :BundleInstall! -更新列表中全部插件
  • :BundleSearch foo -查找foo插件
  • :BundleSearch! foo -刷新foo插件缓存
  • :BundleClean -清除列表中没有的插件
  • :BundleClean! -清除列表中没有的插件

常用插件的安装和使用

ctags和taglist

taglist是一个用于显示定位程序中各种符号的插件,例如宏定义、变量名、结构名、函数名这些东西 我们将其称之为符号(symbols),而在taglist中将其称之为tag。显然,要想将程序文件中的tag显示出来,需要事先了解全部tag的信 息,并将其保存在一个文件中,然后去解析对应的tag文件。taglist做的仅仅是将tag文件中的内容解析完后显示在Vim上而已。tag扫描以及数 据文件的生成则是由ctags(Exuberant Ctags)这一工具完成的,所以在使用taglist之前,你的电脑需要装有ctags。

vimrc配置信息:

Bundle 'taglist.vim'
let Tlist_Ctags_Cmd='ctags'
let Tlist_Show_One_File=1               "不同时显示多个文件的tag,只显示当前文件的
let Tlist_WinWidt =28                   "设置taglist的宽度
let Tlist_Exit_OnlyWindow=1             "如果taglist窗口是最后一个窗口,则退出vim
"let Tlist_Use_Right_Window=1           "在右侧窗口中显示taglist窗口
let Tlist_Use_Left_Windo =1             "在左侧窗口中显示taglist窗口 

跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o 在一个新打开的窗口中显示光标下tag
显示光标下tag的原型定义
u 更新taglist窗口中的tag
s 更改排序方式,在按名字排序和按出现顺序排序间切换
x taglist窗口放大和缩小,方便查看较长的tag

  • 打开一个折叠,同zo
  • 将tag折叠起来,同zc
  • 打开所有的折叠,同zR
    = 将所有tag折叠起来,同zM
    [[ 跳到前一个文件
    ]] 跳到后一个文件
    q 关闭taglist窗口

Tagbar

tagbar是一个taglist的替代品,比taglist更适合c++使用,函数能够按类区分,支持按类折叠显示等,显示结果清晰简洁。
由于taglist在使用过程中对中文支持不好,当文件夹是中文的时候,没法生成taglist,于是这里我使用tagbar,它可以很好的解决中文的问题。
https://github.com/majutsushi/tagbar

关于tagbar的配置:

Bundle 'majutsushi/tagbar'
"nmap <Leader>tb :TagbarToggle<CR>      "快捷键设置
let g:tagbar_ctags_bin='ctags'          "ctags程序的路径
let g:tagbar_width=30                   "窗口宽度的设置
map <F3> :Tagbar<CR>
"autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen()  "如果是c语言的程序的话,tagbar自动开启

更多的配置请参看:help tagbar
配置好之后可以使用:Tagbar或者按配置的快捷键F3开启。

NERDTree

NERDTree是一个用于浏览文件系统的树形资源管理外挂,它可以让你像使用Windows档案总管一样在VIM中浏览文件系统并且打开文件或目录。
https://github.com/scrooloose/nerdtree

vimrc配置信息:

Bundle 'scrooloose/nerdtree'
let NERDTreeWinPos='right'
let NERDTreeWinSize=30
map <F2> :NERDTreeToggle<CR>

配置之后可以使用:NERDTree或者配置的快捷键F2开启。

MiniBufExplorer

MiniBufExplorer提供多文件同时编辑功能,并在编辑器上方显示文件的标签。
https://github.com/fholgado/minibufexpl.vim

vimrc配置信息:

Bundle 'fholgado/minibufexpl.vim'
let g:miniBufExplMapWindowNavVim = 1   
let g:miniBufExplMapWindowNavArrows = 1   
let g:miniBufExplMapCTabSwitchBufs = 1   
let g:miniBufExplModSelTarget = 1  
let g:miniBufExplMoreThanOne=0

map <F11> :MBEbp<CR>
map <F12> :MBEbn<CR>

这里配置了F11和F12键来进行前后buffer的跳转,比较方便。如果要关闭某个buffer的话,可以使用命令:MBEbd [num],如果只是输入:MBEbd是关闭当前buffer,如果后面跟有buffer的数字标号,则关闭指定的buffer。

这里还想说一些BufExplorer这个插件,这个插件和MiniBufExplorer的功能差不多,网上也有一些讨论他们之间的优缺点,但是我将BufExplorer和WinManager一起使用的时候总是会有些问题,导致一些错误和冲突,于是还是决定使用简单的MiniBufExplorer。

vim-airline

vim-airline其实是powerline的copy,它相比powerline有几个好处:它是纯vim script,powerline则用到python;它简单,速度比powerline快。
这是一款状态栏增强插件,可以让你的Vim状态栏非常的美观,同时包括了buffer显示条扩展smart tab line以及集成了一些插件。
https://github.com/bling/vim-airline

vimrc配置信息:

Bundle 'bling/vim-airline'
set laststatus=2

WinManager(弃用)

这个WinManager已经好久没有更新了,原先的版本有很多小bug,使用起来非常不爽,在网上找了一些改进的方法,感觉总是不尽人意,最终决定启用。
这里只是给出在使用的时候查找的一些信息。

vimrc配置信息:

Bundle 'vim-scripts/winmanager'
let g:NERDTree_title="[NERDTree]"
let g:winManagerWindowLayout="NERDTree|BufExplorer"

function! NERDTree_Start()
    exec 'NERDTree'
endfunction
function! NERDTree_IsValid()
    return 1
endfunction

nmap wm :WMToggle<CR>

这个版本的Winmanager好像有个小bug,你在打开Winmanager界面时,会同时打开一个空的文件。这会影响后续使用,所以我们要在打开Winmanager时关掉这个空文件。winmanager.vim文件中找到ToggleWindowsManager函数定义并在修改为如下内容:

function! <SID>ToggleWindowsManager()
    if IsWinManagerVisible()
        call s:CloseWindowsManager()
    else
        call s:StartWindowsManager()
        exe 'q'
    end
endfunction

现在的效果

解决Windows下vim显示中文乱码问题

由于在windows下默认是gb编码,而vim默认是utf-8,所以打开会成乱码。修改了一下配置文件,使vim支持gb编码就好了。
修改一下vimrc配置文件:

let &termencoding=&encoding
set fileencodings=utf-8,gbk

vim编码涉及的基本概念

encoding变量:该选项使用于缓冲的文本(你正在编辑的文件)、寄存器、Vim脚本文件等等。你可以把 ‘encoding’ 选项当作是对 Vim 内部运行机制的设定。
encoding变量的默认值与系统当前locale相同。
fileencoding变量:该选项是vim写入文件时采用的编码类型。
vim打开文件时自动辨认其编码,fileencoding就为辨认的值。为空则保存文件时采用encoding的编码,如果没有修改encoding,那值就是系统当前locale了。
termencoding变量:该选项代表输出到客户终端(Term)采用的编码类型。
默认空值,也就是输出到终端不进行编码转换。

补充:使用pathogen来管理vim插件

pathogen让每个插件占有一个单独的目录,解决了文件分散的问题。安装完pathogen之后,只需要在/.vim/目录下新建一个目录/.vim/bundle/,并将要安装的所有插件放在/.vim/bundle/目录下即可以使用。如果要删除某个插件,只需要将/.vim/bundle/目录下对应的插件目录删除即可。如果想保持某个插件为最新版本,直接从插件的仓库checkout一份代码到bundle目录即可。

安装并启用pathogen

pathogen的下载地址为:https://github.com/tpope/vim-pathogen
下载后可以直接解压。pathogen插件只有一个单独的脚本,所谓安装就是把它放在当前用户的 ~/.vim/autoload 目录下即可。
即,将解压后的autoload目录连同里面的pathogen.vim插件拷贝到~/.vim/目录下。

要启用pathogen,还需要在~/.vimrc 文件里, filetype plugin indent on 之前的任何地方,加入下面这句:

call pathogen#infect()

安装插件

要安装新插件,只需要下载该插件,并将其放到~/.vim/bundle/目录下即可。
假设要下载安装NERDTree插件,只需要进入到~/.vim/bundle/目录,然后执行以下命令:

git clone http://github.com/scrooloose/nerdtree.git

下载完成后,会看到~/.vim/bundle/目录下会多出一个新的目录:nerdtree。NERDTree插件已经安装完成了!可以看到这种方式比传统的vim插件安装方式简单多了!
而要卸载该插件也非常简单,只需要在~/.vim/bundle/目录下删除nerdtree目录即可,干净利落!
要更新该插件到最新版本,只需要进入到该目录~/.vim/bundle/nerdtree/,并执行以下命令:

git pull origin

小结

虽然使用pathogen这种方法也可以很好的管理vim插件,相比于vundle,它们都是使用git环境来下载插件的,但是vundle感觉更加自动化,可以直接使用命令就能进行插件的更新和管理。

参考资料

vim配置及插件安装管理(超级详细)
使用taglist插件
vim显示中文成乱码问题解决
Vim插件便捷管理(使用git submodule和pathogen)
vim插件管理利器:pathogen

转载请注明作者Jason Ding及其出处
GitCafe博客主页(http://jasonding1354.gitcafe.io/)
Github博客主页(http://jasonding1354.github.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)
百度搜索jasonding1354进入我的博客主页

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • macvim配置 最终效果如下: 系统环境 macos10.12.4 homebrew1.2.1 python3....
    Like_eb56阅读 68,685评论 5 65
  • 常言道:工欲善其事,必先利其器 ,作为一个程序员,一个常用的工具就是编辑器,我选择一个能极大提高自己开发效率的编辑...
    Sam_Lau阅读 120,432评论 34 266
  • 主要为大家介绍一下vim的安装、配置及python3开发环境配置,文中经验一部分取自网上,一部分为自己的经验。希望...
    zhengjie阅读 13,272评论 6 35
  • 首先晒一张我的vim截图,基本IDE有的功能都能实现了,虽然在日常工作里还是用商用软件SourceInsight,...
    卡巴拉的树阅读 18,743评论 7 78
  • 前世有怎样的命运 会在奈何桥上许下今生的承诺 掌心的痣是唯一的记号 只有你认得出 四季更替了一年又一年 等不来你认...
    深北羽翼阅读 275评论 24 14