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

Vundle

項(xiàng)目托管在github上https://github.com/gmarik/vundle
其特色在于使用git來(lái)管理插件,更新方便,支持搜索似芝,一鍵更新那婉,從此只需要一個(gè)vimrc走天下。

在vimrc文件中添加如下內(nèi)容來(lái)啟用vundle管理vim插件的功能:

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

如果是linux系統(tǒng)党瓮,可以如下添加:

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

Vundle命令

  • :BundleList -列舉出列表中(.vimrc中)配置的所有插件
  • :BundleInstall -安裝列表中全部插件
  • :BundleInstall! -更新列表中全部插件
  • :BundleSearch foo -查找foo插件
  • :BundleSearch! foo -刷新foo插件緩存
  • :BundleClean -清除列表中沒(méi)有的插件
  • :BundleClean! -清除列表中沒(méi)有的插件

常用插件的安裝和使用

ctags和taglist

taglist是一個(gè)用于顯示定位程序中各種符號(hào)的插件详炬,例如宏定義、變量名寞奸、結(jié)構(gòu)名呛谜、函數(shù)名這些東西 我們將其稱之為符號(hào)(symbols),而在taglist中將其稱之為tag蝇闭。顯然呻率,要想將程序文件中的tag顯示出來(lái),需要事先了解全部tag的信 息呻引,并將其保存在一個(gè)文件中礼仗,然后去解析對(duì)應(yīng)的tag文件。taglist做的僅僅是將tag文件中的內(nèi)容解析完后顯示在Vim上而已逻悠。tag掃描以及數(shù) 據(jù)文件的生成則是由ctags(Exuberant Ctags)這一工具完成的元践,所以在使用taglist之前,你的電腦需要裝有ctags童谒。

vimrc配置信息:

Bundle 'taglist.vim'
let Tlist_Ctags_Cmd='ctags'
let Tlist_Show_One_File=1               "不同時(shí)顯示多個(gè)文件的tag单旁,只顯示當(dāng)前文件的
let Tlist_WinWidt =28                   "設(shè)置taglist的寬度
let Tlist_Exit_OnlyWindow=1             "如果taglist窗口是最后一個(gè)窗口,則退出vim
"let Tlist_Use_Right_Window=1           "在右側(cè)窗口中顯示taglist窗口
let Tlist_Use_Left_Windo =1             "在左側(cè)窗口中顯示taglist窗口 

跳到光標(biāo)下tag所定義的位置饥伊,用鼠標(biāo)雙擊此tag功能也一樣
o 在一個(gè)新打開的窗口中顯示光標(biāo)下tag
顯示光標(biāo)下tag的原型定義
u 更新taglist窗口中的tag
s 更改排序方式象浑,在按名字排序和按出現(xiàn)順序排序間切換
x taglist窗口放大和縮小,方便查看較長(zhǎng)的tag

  • 打開一個(gè)折疊琅豆,同zo
  • 將tag折疊起來(lái)愉豺,同zc
  • 打開所有的折疊,同zR
    = 將所有tag折疊起來(lái)茫因,同zM
    [[ 跳到前一個(gè)文件
    ]] 跳到后一個(gè)文件
    q 關(guān)閉taglist窗口

Tagbar

tagbar是一個(gè)taglist的替代品蚪拦,比taglist更適合c++使用,函數(shù)能夠按類區(qū)分冻押,支持按類折疊顯示等驰贷,顯示結(jié)果清晰簡(jiǎn)潔。
由于taglist在使用過(guò)程中對(duì)中文支持不好洛巢,當(dāng)文件夾是中文的時(shí)候括袒,沒(méi)法生成taglist,于是這里我使用tagbar稿茉,它可以很好的解決中文的問(wèn)題箱熬。
https://github.com/majutsushi/tagbar

關(guān)于tagbar的配置:

Bundle 'majutsushi/tagbar'
"nmap <Leader>tb :TagbarToggle<CR>      "快捷鍵設(shè)置
let g:tagbar_ctags_bin='ctags'          "ctags程序的路徑
let g:tagbar_width=30                   "窗口寬度的設(shè)置
map <F3> :Tagbar<CR>
"autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen()  "如果是c語(yǔ)言的程序的話类垦,tagbar自動(dòng)開啟

更多的配置請(qǐng)參看:help tagbar
配置好之后可以使用:Tagbar或者按配置的快捷鍵F3開啟。

NERDTree

NERDTree是一個(gè)用于瀏覽文件系統(tǒng)的樹形資源管理外掛,它可以讓你像使用Windows檔案總管一樣在VIM中瀏覽文件系統(tǒng)并且打開文件或目錄城须。
https://github.com/scrooloose/nerdtree

vimrc配置信息:

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

配置之后可以使用:NERDTree或者配置的快捷鍵F2開啟蚤认。

MiniBufExplorer

MiniBufExplorer提供多文件同時(shí)編輯功能,并在編輯器上方顯示文件的標(biāo)簽糕伐。
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鍵來(lái)進(jìn)行前后buffer的跳轉(zhuǎn)砰琢,比較方便。如果要關(guān)閉某個(gè)buffer的話良瞧,可以使用命令:MBEbd [num]陪汽,如果只是輸入:MBEbd是關(guān)閉當(dāng)前buffer,如果后面跟有buffer的數(shù)字標(biāo)號(hào)褥蚯,則關(guān)閉指定的buffer挚冤。

這里還想說(shuō)一些BufExplorer這個(gè)插件,這個(gè)插件和MiniBufExplorer的功能差不多赞庶,網(wǎng)上也有一些討論他們之間的優(yōu)缺點(diǎn)训挡,但是我將BufExplorer和WinManager一起使用的時(shí)候總是會(huì)有些問(wèn)題,導(dǎo)致一些錯(cuò)誤和沖突歧强,于是還是決定使用簡(jiǎn)單的MiniBufExplorer澜薄。

vim-airline

vim-airline其實(shí)是powerline的copy,它相比powerline有幾個(gè)好處:它是純vim script摊册,powerline則用到python肤京;它簡(jiǎn)單,速度比powerline快茅特。
這是一款狀態(tài)欄增強(qiáng)插件忘分,可以讓你的Vim狀態(tài)欄非常的美觀,同時(shí)包括了buffer顯示條擴(kuò)展smart tab line以及集成了一些插件白修。
https://github.com/bling/vim-airline

vimrc配置信息:

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

WinManager(棄用)

這個(gè)WinManager已經(jīng)好久沒(méi)有更新了妒峦,原先的版本有很多小bug,使用起來(lái)非常不爽熬荆,在網(wǎng)上找了一些改進(jìn)的方法舟山,感覺(jué)總是不盡人意绸狐,最終決定啟用卤恳。
這里只是給出在使用的時(shí)候查找的一些信息。

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>

這個(gè)版本的Winmanager好像有個(gè)小bug寒矿,你在打開Winmanager界面時(shí)突琳,會(huì)同時(shí)打開一個(gè)空的文件。這會(huì)影響后續(xù)使用符相,所以我們要在打開Winmanager時(shí)關(guān)掉這個(gè)空文件拆融。winmanager.vim文件中找到ToggleWindowsManager函數(shù)定義并在修改為如下內(nèi)容:

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

現(xiàn)在的效果

解決Windows下vim顯示中文亂碼問(wèn)題

由于在windows下默認(rèn)是gb編碼蠢琳,而vim默認(rèn)是utf-8,所以打開會(huì)成亂碼镜豹。修改了一下配置文件傲须,使vim支持gb編碼就好了。
修改一下vimrc配置文件:

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

vim編碼涉及的基本概念

encoding變量:該選項(xiàng)使用于緩沖的文本(你正在編輯的文件)趟脂、寄存器泰讽、Vim腳本文件等等。你可以把 ‘encoding’ 選項(xiàng)當(dāng)作是對(duì) Vim 內(nèi)部運(yùn)行機(jī)制的設(shè)定昔期。
encoding變量的默認(rèn)值與系統(tǒng)當(dāng)前l(fā)ocale相同已卸。
fileencoding變量:該選項(xiàng)是vim寫入文件時(shí)采用的編碼類型。
vim打開文件時(shí)自動(dòng)辨認(rèn)其編碼硼一,fileencoding就為辨認(rèn)的值累澡。為空則保存文件時(shí)采用encoding的編碼,如果沒(méi)有修改encoding般贼,那值就是系統(tǒng)當(dāng)前l(fā)ocale了愧哟。
termencoding變量:該選項(xiàng)代表輸出到客戶終端(Term)采用的編碼類型。
默認(rèn)空值具伍,也就是輸出到終端不進(jìn)行編碼轉(zhuǎn)換翅雏。

補(bǔ)充:使用pathogen來(lái)管理vim插件

pathogen讓每個(gè)插件占有一個(gè)單獨(dú)的目錄,解決了文件分散的問(wèn)題人芽。安裝完pathogen之后望几,只需要在/.vim/目錄下新建一個(gè)目錄/.vim/bundle/,并將要安裝的所有插件放在/.vim/bundle/目錄下即可以使用萤厅。如果要?jiǎng)h除某個(gè)插件橄抹,只需要將/.vim/bundle/目錄下對(duì)應(yīng)的插件目錄刪除即可。如果想保持某個(gè)插件為最新版本惕味,直接從插件的倉(cāng)庫(kù)checkout一份代碼到bundle目錄即可楼誓。

安裝并啟用pathogen

pathogen的下載地址為:https://github.com/tpope/vim-pathogen
下載后可以直接解壓。pathogen插件只有一個(gè)單獨(dú)的腳本名挥,所謂安裝就是把它放在當(dāng)前用戶的 ~/.vim/autoload 目錄下即可疟羹。
即,將解壓后的autoload目錄連同里面的pathogen.vim插件拷貝到~/.vim/目錄下禀倔。

要啟用pathogen榄融,還需要在~/.vimrc 文件里, filetype plugin indent on 之前的任何地方,加入下面這句:

call pathogen#infect()

安裝插件

要安裝新插件救湖,只需要下載該插件愧杯,并將其放到~/.vim/bundle/目錄下即可。
假設(shè)要下載安裝NERDTree插件鞋既,只需要進(jìn)入到~/.vim/bundle/目錄力九,然后執(zhí)行以下命令:

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

下載完成后耍铜,會(huì)看到~/.vim/bundle/目錄下會(huì)多出一個(gè)新的目錄:nerdtree。NERDTree插件已經(jīng)安裝完成了跌前!可以看到這種方式比傳統(tǒng)的vim插件安裝方式簡(jiǎn)單多了棕兼!
而要卸載該插件也非常簡(jiǎn)單,只需要在~/.vim/bundle/目錄下刪除nerdtree目錄即可抵乓,干凈利落程储!
要更新該插件到最新版本,只需要進(jìn)入到該目錄~/.vim/bundle/nerdtree/臂寝,并執(zhí)行以下命令:

git pull origin

小結(jié)

雖然使用pathogen這種方法也可以很好的管理vim插件章鲤,相比于vundle,它們都是使用git環(huán)境來(lái)下載插件的咆贬,但是vundle感覺(jué)更加自動(dòng)化败徊,可以直接使用命令就能進(jìn)行插件的更新和管理。

參考資料

vim配置及插件安裝管理(超級(jí)詳細(xì))
使用taglist插件
vim顯示中文成亂碼問(wèn)題解決
Vim插件便捷管理(使用git submodule和pathogen)
vim插件管理利器:pathogen

轉(zhuǎn)載請(qǐng)注明作者Jason Ding及其出處
GitCafe博客主頁(yè)(http://jasonding1354.gitcafe.io/)
Github博客主頁(yè)(http://jasonding1354.github.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
簡(jiǎn)書主頁(yè)(http://www.reibang.com/users/2bd9b48f6ea8/latest_articles)
百度搜索jasonding1354進(jìn)入我的博客主頁(yè)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掏缎,一起剝皮案震驚了整個(gè)濱河市惫东,隨后出現(xiàn)的幾起案子柒桑,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞬欧,死亡現(xiàn)場(chǎng)離奇詭異元媚,居然都是意外死亡阅羹,警方通過(guò)查閱死者的電腦和手機(jī)为居,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)忌怎,“玉大人籍滴,你說(shuō)我怎么就攤上這事×裥ィ” “怎么了孽惰?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)鸥印。 經(jīng)常有香客問(wèn)我勋功,道長(zhǎng),這世上最難降的妖魔是什么库说? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任狂鞋,我火速辦了婚禮,結(jié)果婚禮上璃弄,老公的妹妹穿的比我還像新娘要销。我一直安慰自己构回,他們只是感情好夏块,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布疏咐。 她就那樣靜靜地躺著,像睡著了一般脐供。 火紅的嫁衣襯著肌膚如雪浑塞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天政己,我揣著相機(jī)與錄音酌壕,去河邊找鬼。 笑死歇由,一個(gè)胖子當(dāng)著我的面吹牛卵牍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沦泌,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼糊昙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了谢谦?” 一聲冷哼從身側(cè)響起释牺,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎回挽,沒(méi)想到半個(gè)月后没咙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡千劈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年祭刚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片墙牌。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡袁梗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出憔古,到底是詐尸還是另有隱情遮怜,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布鸿市,位于F島的核電站锯梁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏焰情。R本人自食惡果不足惜陌凳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望内舟。 院中可真熱鬧合敦,春花似錦、人聲如沸验游。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至崔梗,卻和暖如春夜只,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蒜魄。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工扔亥, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谈为。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓旅挤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親伞鲫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谦铃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • macvim配置 最終效果如下: 系統(tǒng)環(huán)境 macos10.12.4 homebrew1.2.1 python3....
    Like_eb56閱讀 69,414評(píng)論 5 65
  • 常言道:工欲善其事驹闰,必先利其器 ,作為一個(gè)程序員撒会,一個(gè)常用的工具就是編輯器嘹朗,我選擇一個(gè)能極大提高自己開發(fā)效率的編輯...
    Sam_Lau閱讀 120,785評(píng)論 34 266
  • 主要為大家介紹一下vim的安裝屹培、配置及python3開發(fā)環(huán)境配置,文中經(jīng)驗(yàn)一部分取自網(wǎng)上怔檩,一部分為自己的經(jīng)驗(yàn)褪秀。希望...
    zhengjie閱讀 13,397評(píng)論 6 35
  • 首先曬一張我的vim截圖,基本IDE有的功能都能實(shí)現(xiàn)了薛训,雖然在日常工作里還是用商用軟件SourceInsight媒吗,...
    卡巴拉的樹閱讀 18,854評(píng)論 7 77
  • 前世有怎樣的命運(yùn) 會(huì)在奈何橋上許下今生的承諾 掌心的痣是唯一的記號(hào) 只有你認(rèn)得出 四季更替了一年又一年 等不來(lái)你認(rèn)...
    深北羽翼閱讀 300評(píng)論 24 14