從 0 開(kāi)始學(xué)習(xí) Linux 系列之「04.安裝 4 個(gè)必備的 vim 插件」

vim

版權(quán)聲明:本文為 cdeveloper 原創(chuàng)文章,可以隨意轉(zhuǎn)載,但必須在明確位置注明出處!

讀這篇博客你能學(xué)到些什么?

這篇博客主要介紹 vim 常用插件的安裝配置方法,你可以學(xué)到下面這些內(nèi)容

  1. 掌握 vim 安裝插件的方法,即使系統(tǒng)不同,也能有把握安裝成功
  2. 掌握常用 vim 插件的配置和使用方法
  3. 通過(guò)本篇博客學(xué)會(huì)類(lèi)比,掌握解決問(wèn)題的有效方法

我最想教你的是如何去思考,遇到問(wèn)題如何使用「英文搜索 + Google + stackoverflow + GitHub + 官網(wǎng)」自己去解決的能力。我希望當(dāng)你看完我的文章,以后再遇到問(wèn)題的時(shí)候,能夠首先嘗試自己解決,以此形成一套自己的方法,這才是最重要的

當(dāng)然,這篇文章介紹的 vim 插件安裝配置方法也很有用,也要學(xué)會(huì),下面正式開(kāi)始,別有壓力,我的方法很簡(jiǎn)單。

為何需要安裝 vim 插件?

一句話(huà):既能提高你的編程效率,也能提高你的逼格!心動(dòng)了嗎,心動(dòng)不如行動(dòng)哦,看完之后一定要去實(shí)踐。

簡(jiǎn)單的安裝方法 Vundle

我使用的非常簡(jiǎn)單的 Vundle 來(lái)管理 vim 的插件,首先我們先來(lái)安裝 Vundle。在 Linux 下,開(kāi)源軟件是主流,所以我們先到 GitHub 上看看有沒(méi)有 Vundle 這個(gè)東西,經(jīng)過(guò)搜索還真找到了(如果沒(méi)有找到,我會(huì)去 Google 上搜索 How to install Vundle to Linux):

Vundle 地址:https://github.com/VundleVim/Vundle.vim

我在它的主頁(yè)上看到了官方的英文安裝文檔,因?yàn)槲移匠=?jīng)常閱讀英文文檔,所以很容易就安裝完成了,你也可以先嘗試自己安裝,下面是我根據(jù)官方文檔總結(jié)的安裝方法(其實(shí)就是翻譯一下):

1.如果你沒(méi)有安裝 git,先安裝它:

sudo apt-get install git

2.使用 git 安裝 Vundle 到 ~/.vim/bundle/Vundle.vim 目錄下:

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

3.添加官方文檔提供的配置信息到 ~/.vimrc 中:

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
...

配置不止這些,后面還有很多,這里就不列出來(lái)了,你只需要將官方文檔提供的配置信息復(fù)制到你的 ~/.vimrc 中即可,原理不要求了解。

4.打開(kāi) vim,第一次安裝默認(rèn)插件:

# 只在終端鍵入 vim,后面什么都不加
vim
# 然后鍵入下面的命令
:PluginInstall

# 之后等待安裝完成,[ :q ] 來(lái)退出即可

只需要這簡(jiǎn)單的 4 步即可,通過(guò)安裝 Vundle,我想讓你知道一個(gè)安裝軟件的思路:就是去看軟件的官方安裝文檔。因?yàn)椋胁┛偷陌惭b方法幾乎都是參考官網(wǎng)的,我的也不例外,但是官方文檔一般都是英文的,這就是為什么你要學(xué)好英語(yǔ)的原因。

需要安裝的 4 個(gè)常用插件

下面這 4 個(gè)插件是我平常比較常用的,這里推薦給大家。

1. tagbar

這個(gè)插件可以瀏覽當(dāng)前文件的標(biāo)簽,地址在 GitHub 上:tagbar,效果如下:

tagbar.png

2. nerdtree

這個(gè)插件可以瀏覽當(dāng)前文件所在的目錄,地址在 GitHub 上:nerdtree,效果如下:

nerdtree.png

3. vim-airline

這個(gè)插件可以使得你的 vim 狀態(tài)欄更高逼格,同時(shí)也提供一些優(yōu)秀的顯示功能,地址在 GitHub 上:vim-airline,效果如下(官方的圖):

airline

4. minibufexpl

這個(gè)插件可以允許多個(gè)代碼窗口切換或分屏使用,地址在 GitHub 上:minibufexpl,效果如下(官方的圖):

minibuf

下面介紹安裝和配置方法。

安裝和配置方法

安裝:因?yàn)槲覀兪褂?Vundle 來(lái)管理插件,這種方法安裝插件比較簡(jiǎn)單,只需要在 ~/.vimrc 文件中加上配置信息,然后打開(kāi) vim,鍵入 :PluginInstall 來(lái)等待安裝完成即可。

配置所有的插件配置信息都可以自定義我是在每個(gè)插件的官方文檔上學(xué)到如何配置插件的,我建議你也使用這種方法,可以提高你的學(xué)習(xí)能力和閱讀英文文檔的能力,例如 tagbar 的官方文檔,不要怕看不懂,你不嘗試看,永遠(yuǎn)都看不懂。

注意我建議你安裝一個(gè),配置一個(gè),然后立刻學(xué)會(huì)使用這個(gè)插件,不要一下全部安裝,結(jié)果不會(huì)使用搞的一團(tuán)糟...

下面是具體的安裝配置過(guò)程。

1.安裝 tagbar 插件

1.該插件需要先安裝 ctags

sudo apt-get install ctags

2.添加插件和其配置信息到 ~/.vimrc

# ~/.vimrc
...
# 添加 tagbar 插件
Plugin 'majutsushi/tagbar'

# 配置 tagbar 插件
let g:tagbar_ctags_bin='ctags'     "ctags 程序的路徑
let g:tagbar_width=30              "窗口寬度設(shè)置為 30
let g:tagbar_left=1                "設(shè)置在 vim 左邊顯示
let g:tagbar_map_openfold = "zv"   "按 zv 組合鍵打開(kāi)標(biāo)簽,默認(rèn) zc 關(guān)閉標(biāo)簽

"如果是 C 語(yǔ)言的程序的話(huà),tagbar 自動(dòng)開(kāi)啟
autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen() 

"我設(shè)置 F2 為打開(kāi)或者關(guān)閉的快捷鍵,根據(jù)你的習(xí)慣更改
nnoremap <silent> <F2> :TagbarToggle<CR>
...

根據(jù)我的配置,tagbar 基本使用方法如下:

  1. 「上下方向健」移動(dòng)光標(biāo)
  2. 「zc」 關(guān)閉標(biāo)簽,「zv」 打開(kāi)標(biāo)簽
  3. 按「空格」在狀態(tài)欄顯示當(dāng)前標(biāo)簽的聲明
  4. 按 「p」定位到該標(biāo)簽的代碼處,但不移動(dòng)焦點(diǎn)
  5. 「回車(chē)」移動(dòng)焦點(diǎn)到當(dāng)前標(biāo)簽所在的代碼處

其他用法,參考 tagbar 官方文檔

2.安裝 nerdtree 插件

這個(gè)插件安裝比較簡(jiǎn)單,直接添加并配置即可,這些配置信息都是我從 nerdtree 的官方文檔上根據(jù)自己的需求復(fù)制的,你可能說(shuō)有些配置好復(fù)雜啊,我不懂原理怎么辦?其實(shí)我也不懂,我也不需要懂,我的目的是使用插件,而不是開(kāi)發(fā)插件,要搞清楚初衷哦。

# ~/.vimrc
...
# 添加 nerdtree 插件
Plugin 'scrooloose/nerdtree'

# 配置 nerdtree 插件,
let NERDTreeWinPos='right'             "設(shè)置在 vim 右側(cè)顯示
let NERDTreeWinSize=30                 "設(shè)置寬度為 30            
let g:NERDTreeDirArrowExpandable = '?'
let g:NERDTreeDirArrowCollapsible = '?'

autocmd vimenter * NERDTree

wincmd w

autocmd VimEnter * wincmd w

autocmd StdinReadPre * let s:std_in=1

autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | endif

autocmd StdinReadPre * let s:std_in=1

autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif

autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif

" 我設(shè)置 F3 為打開(kāi)或者關(guān)閉的快捷鍵,你可以自定義
map <F3> :NERDTreeToggle<CR>
...

根據(jù)我的配置,nerdtree 基本使用方法如下:

  1. 「上下方向鍵」移動(dòng)光標(biāo)
  2. 「回車(chē)」打開(kāi)新的文件或目錄

詳細(xì)用法,參考 nerdtree 官方文檔

3.安裝 vim-airline 插件

這個(gè)插件的安裝非常簡(jiǎn)單,也不需要很多的配置。

# 安裝 vim-airline
Plugin 'bling/vim-airline'

# 配置
set laststatus=2

這個(gè)插件主要起指示作用,基本不需要主動(dòng)去操作,詳細(xì)的介紹參考 vim-airline 官方文檔

4.安裝 minibufexpl 插件

安裝完這個(gè)插件,我們可以使用 Crtl + 方向鍵 來(lái)在各個(gè)窗口之間相互切換,非常的方便。

# 安裝插件
Plugin 'fholgado/minibufexpl.vim'

# 配置插件信息,官方文檔提供配置信息
let g:miniBufExplMapWindowNavVim = 1   
let g:miniBufExplMapWindowNavArrows = 1   
let g:miniBufExplMapCTabSwitchBufs = 1   
let g:miniBufExplModSelTarget = 1  
let g:miniBufExplMoreThanOne=0

# 注意:這里設(shè)置使用 Ctrl + 上下左右來(lái)切換窗口,請(qǐng)查看官方文檔來(lái)自定義
noremap <C-Down>  <C-W>j
noremap <C-Up>    <C-W>k
noremap <C-Left>  <C-W>h
noremap <C-Right> <C-W>l

map <T> :MBEbp<CR>
map <R> :MBEbn<CR>

根據(jù)我的配置,基本使用方法如下:

  1. 「上下左右方向鍵」來(lái)切換窗口
  2. 切換到 minibufexpl 頂部狀態(tài)欄,按「左右方向鍵」來(lái)選擇窗口,「回車(chē)」打開(kāi)并覆蓋當(dāng)前窗口,「s」分割一個(gè)新的窗口

詳細(xì)用法,參考 minibufexpl 官方文檔

安裝遇到問(wèn)題怎么辦?

因?yàn)榇蠹业臋C(jī)器配置不同,可能在我的電腦上安裝沒(méi)有問(wèn)題,但是到別的電腦上就有問(wèn)題了。如果你遇到問(wèn)題,請(qǐng)自己嘗試用 「英文搜索 + Google + stackoverflow + GitHub + 官方文檔」的方式自己解決,一方面是因?yàn)橐话?90% 的問(wèn)題都有很好的解決方案,因?yàn)槟阌龅降膯?wèn)題別人之前就遇到過(guò)了,并且已經(jīng)有了正確的答案,另一方面是因?yàn)閯e人也沒(méi)有義務(wù)來(lái)幫助你啊,別人也有事情要忙的,除非你給 Ta 些費(fèi)用。

我平常遇到問(wèn)題,除非上面這種方法解決不了,否則我基本不會(huì)問(wèn)別人(如果這種方法都解決不了,你問(wèn)的人很有可能也不會(huì)的~)。所以,當(dāng)你習(xí)慣了這種解決問(wèn)題的方法,請(qǐng)不要太感謝我,如果你現(xiàn)在還不習(xí)慣,那么可能你的閱讀英文文檔的能力還要加強(qiáng),沒(méi)關(guān)系,從現(xiàn)在開(kāi)始培養(yǎng)吧。

完整的 .vimrc 配置文件

這是我的 ~/.vimrc 文件的內(nèi)容,你可以下載來(lái)參考。

總結(jié)

這篇文章只介紹了 4 個(gè)常用的插件,還有 2 個(gè)常用插件我沒(méi)有寫(xiě)出來(lái),留作后面介紹,主要是防止內(nèi)容過(guò)多,另外也因?yàn)槟?2 個(gè)插件安裝稍微有點(diǎn)麻煩,這兩個(gè)插件分別是:

  1. 號(hào)稱(chēng) vim 史上最難安裝的代碼自動(dòng)補(bǔ)全插件:YouCompleteMe,其實(shí)掌握了方法也不難。
  2. vim 的 MarkDown 插件,我就是用這個(gè) vim 插件來(lái)寫(xiě)博客的,逼格很高!

另外,讀完之后,如果你還沒(méi)有實(shí)踐的話(huà),我并不希望你記住具體的步驟,我希望你記住的是安裝這些插件的思路:GitHub + 官方文檔。作為類(lèi)比,還是那句話(huà),我希望你在以后遇到問(wèn)題時(shí)能借助 「英文搜索 + Google + stackoverflow + GitHub + 官方文檔」的方式先嘗試自己解決,我最希望的是你在看我文章的過(guò)程中總結(jié)一套適合自己的學(xué)習(xí)和解決問(wèn)題的方法,因?yàn)閷?shí)際的工作就是以解決問(wèn)題為驅(qū)動(dòng)的,希望你能重視這一點(diǎn)。

最后,感謝你在百忙之中的閱讀,我們下次再見(jiàn) :)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,460評(píng)論 6 538
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,067評(píng)論 3 423
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 177,467評(píng)論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,468評(píng)論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,184評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,582評(píng)論 1 325
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,616評(píng)論 3 444
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,794評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,343評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,096評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,291評(píng)論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,863評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,513評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,941評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,190評(píng)論 1 291
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,026評(píng)論 3 396
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,253評(píng)論 2 375

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