vim外掛程式安裝

來源:互聯網
上載者:User

轉載一個vim外掛程式安裝攻略

原文出處:http://littlewhite.us/archives/212


C/C++是使用比例最高的程式語言,而vim是專為程式員開發的編輯器,當這兩者結合起來,會給我們帶來怎樣的效果呢。

對於windows上做C++開發的使用者來說,vs為他們做了大量的工作,文法高亮、自動縮排、智能提示等等,當你happy的使用vs時,請記住一點,這是一個收費軟體,雖然在我大中華普遍都在使用微軟的盜版軟體,但作為程式員我們心裡應該知道這是不對的行為,然後再去——等等,我們今天討論的不是這個話題,我們要說的是Linux下的免費軟體vim。

vim外掛程式安裝的教程在互連網上已經數不勝數,但是品質也參差不齊,很多都是在其它地方轉載copy,而且沒有註明使用環境,很多人安裝時發現無法work,最後搞得一團糟,今天這篇文章的宗旨只有兩個:1、使得安裝簡單;2、保證可以用。

閱讀這篇文章的前提是你至少使用過vim,知道基本的操作。下面就開始進入主題。 安裝環境 CentOS release 6.3 (Final) VIM 7.2

本文的外掛程式安裝均在以上環境中進行,順帶也會提一下其它平台的安裝方式。 準備工作

由於大多數vim外掛程式都可以在github上找到,而且通過git安裝、刪除、升級外掛程式都異常簡單,因此我們需要首先安裝git工具,如果不知道git和github,可以先自行Google

centos安裝

sudo yum install git

ubuntu安裝

sudo apt-get install git

Mac安裝
由於Mac沒有像yum和apt-get一樣的包管理工具,需要先安裝一個類似的包管理工具,這對於安裝一些Linux命令是非常有協助的 安裝包管理工具homebrew

 ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
通過brew安裝git
 brew install git

我將本文需要安裝的外掛程式和設定檔都放在了github上,如果你不想大費周折的瞭解每個外掛程式的安裝方式,可以直接下載所有外掛程式即可使用,項目地址https://github.com/handy1989/vim,可以按照如下命令備份並一次安裝所有外掛程式(注意,從git上下載的vim目錄下都是隱藏檔案,ls -a可以查看)

mv ~/.vimrc ~/.vimrcbakmv ~/.vim ~/.vimbakgit clone https://github.com/handy1989/vim.gitmv vim/.vimrc vim/.vim ~/
第一個外掛程式

為了不讓外掛程式安裝後目錄顯得淩亂,我們很有必要安裝一個管理外掛程式的外掛程式,這樣功能的外掛程式有好幾個,這裡只推薦一個pathogen

項目地址
https://github.com/tpope/vim-pathogen

安裝
可以通過git安裝,也可以直接下載外掛程式檔案,由於這個外掛程式只有一個檔案,我們選擇後者,而該外掛程式的說明文檔上也是用的這種方法。

mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

然後,就沒有然後,這個外掛程式就安裝完了。是不是覺得so easy! 不過先別急,我們還要對外掛程式進行一些配置,用vim開啟~/.vimrc,輸入如下三行類容

execute pathogen#infect()syntax onfiletype plugin indent on

儲存退出,這個外掛程式的安裝配置就完成了,怎麼驗證外掛程式有沒有生效呢,別急,後面有的是機會驗證。我們先來講講vim外掛程式是個什麼東西。

此時你的~/.vim目錄結構應該是這樣的

├── autoload│   └── pathogen.vim└── bundle

可見~/.vim目錄下是有兩個目錄,其中autoload放的是pathogen外掛程式,所謂的外掛程式其實就是一個指令碼,當vim啟動時,它會自動載入~/.vim/autoload目錄下的指令碼,由於你~/.vimrc裡配置了execute pathogen#infect(),所以它會去自動的執行指令碼裡這個函數,至於這個函數是怎麼實現的,我們不用管它,總之這個函數的功能就是去載入~/.vim/bundle目錄下你安裝的所有外掛程式,pathogen的管理方法大致就是這樣,而我們也看到,vim的外掛程式其實就是一個指令檔,豐富一點的還會帶有說明文檔等其它內容,後面我們碰到了再講解。 auto-pairs

項目地址
https://github.com/jiangmiao/auto-pairs(感興趣的可以看)

功能
自動匹配括弧、引號等

安裝

git clone git://github.com/jiangmiao/auto-pairs.git ~/.vim/bundle/auto-pairs

這樣就將auto-pairs在github上的專案檔下載到了~/.vim/bundle/auto-pairs目錄下

測試
隨便開啟一個檔案,輸入左括弧'(',看右括弧是不是自動出現了,然後刪除左括弧,看右括弧是不是也被刪除了。當然功能遠不止這些,但常用的就這幾點。 NERDTree

項目地址
https://github.com/scrooloose/nerdtree

功能
顯示分類樹

安裝

git clone https://github.com/scrooloose/nerdtree.git ~/.vim/bundle

此時~/.vim/bundle/nerdtree下應該有如下幾個目錄和檔案

autoloaddoclibnerdtree_pluginpluginREADME.markdownsyntax

這幾個目錄是vim預設的外掛程式目錄,如果我們不是通過pathogen載入外掛程式,就需要在~/.vim目錄下建立對應的這幾個目錄,並將NERDTree對應的檔案拷到相應的目錄,這樣每個目錄下會放置多個外掛程式的內容,比如~/.vim/doc下就會放置所有外掛程式的幫組文檔,而我們通過pathogen來管理,每個外掛程式的所有內容都放在同一個目錄中,比如這裡的NERDTree外掛程式的內容我們下載到了~/.vim/bundle/nerdtree下,直接刪除這個目錄即可刪除外掛程式,如果後續外掛程式有更新,在該目錄下通過git命令也可以很容易更新到最新版本。

開啟vim,在命令列模式下輸入:Helptags載入外掛程式的幫組文檔,或者用:helptags help_dir載入指定目錄的幫組文檔,其中help_dir是你需要載入的外掛程式幫組文檔所在的目錄,比如這裡是~/.vim/bundle/nerdtree/doc

測試
用vim開啟一個檔案,在命令列模式下輸入:NERDTree,然後斷行符號,視窗左側就出現了vim工作目錄的分類樹,如下圖所示

將游標置於NERDTree視窗,按'?'可查看協助,NERDTree的操作很簡單,通常是將游標置於一個目錄/檔案上,通過一個按鍵來操作,下面列出幾個常用按鍵及其對應的操作

檔案相關操作o  : 在游標所在的上一個視窗開啟檔案,並將游標置於新開啟的視窗go : 預覽檔案,游標停留在NERDTree視窗中t  : 在新標籤中開啟檔案並啟用gt : 在新標籤開啟檔案,游標留在NERDTree視窗中i  : 水平分割開啟檔案gi : 水平分割預覽s  : 垂直分割開啟檔案gs : 垂直分割預覽分類樹相關操作o  : 展開/關閉目錄O  : 遞迴展開目錄。慎用,如果目錄層級多,開啟會很慢x  : 關閉父目錄C  : 切換游標所在目錄為根目錄u  : 切換分類樹的根目錄為上層目錄U  : 切換分類樹的根目錄為上層目錄,並保持舊的分類樹的狀態r  : 重新整理目前的目錄R  : 重新整理當前根目錄(這個在新加入檔案後會用到)cd : 切換vim工作目錄為游標所在目錄(命令模式下:pwd可查看當前工作目錄)

為了方便開啟NERDTree,我們可以設定快速鍵,開啟~/.vimrc,插入如下一行

map <C-n> :NERDTree<CR>

這樣,當開啟vim時,只要輸入ctrl+n即可開啟NERDTree MiniBufExplorer

項目地址
http://www.vim.org/scripts/script.php?script_id=159

功能
顯示已開啟的buffer

安裝
以6.3.2版本為例,根據項目地址可以找到對應版本的下載連結

mkdir -p ~/.vim/bundle/minibufexplorer/plugin && wget "http://www.vim.org/scripts/download_script.php?src_id=3640" -O ~/.vim/bundle/minibufexplorer/plugin/minibufexpl.vim

測試
用vim開啟一個檔案,此時看不到minibufexplorer視窗,因為預設是只有一個buffer時不顯示視窗的,在命令列模式下通過:vsp filename開啟另一個檔案(或者用NERDTree瀏覽開啟其它檔案),看看此時視窗上方是不是出現了MiniBufExplorer的視窗,如下所示

我們先來解釋一下什麼叫buffer,vim為每個開啟的檔案都建立了一個buffer,這個buffer儲存在記憶體中,為了下次開啟檔案時快速載入,比如我們通過NERDTree瀏覽並開啟了多個檔案,即便某些檔案你退出了編輯,它的buffer仍舊是存在的,在命令模式下,我們輸入:ls可以查看開啟的buffer列表,每一行前面的數字對應buffer的編號,通過輸入:b N,其中N代表buffer編號,可以開啟對應的buffer。對應上面的截圖,我們開啟了兩個檔案,此時minibufexplorer視窗顯示有兩個buffer,即便我們關閉一個檔案,這兩個buffer仍然存在,將游標移到某個buffer的名稱上,斷行符號可開啟對應的buffer,按d可刪除buffer,具體的操作可以直接閱讀外掛程式檔案,路徑為~/.vim/bundle/minibufexplorer/plugin/minibufexpl.vim

配置
在~/.vimrc檔案中加入如下命令

let g:miniBufExplMaxSize = 2

該配置含義為minibufexplorer視窗最大高度為2行,預設是沒有上限的,你開啟的buffer足夠多,一會一直增長下去,為了方便閱讀我一般將它設為2,其它配置不怎麼用到,需要用的時候可以參考外掛程式檔案,並在~/.vimrc中添加配置 ctags+taglist+omnicppcomplete

接下來就到了重磅戲了,前面還只是一些視窗相關的基本操作,是為了方便瀏覽檔案,我們閱讀C++代碼時希望能快速定位函數、變數,類似於VS等其它IDE提供的功能 ctags

這個並不是外掛程式,而是可執行程式,是用來對代碼建索引,方便尋找的,有些Linux版本是內建ctags的,如果沒有,按如下方式安裝

sudo yum install ctags

ubuntu安裝方式

sudo apt-get install ctags

mac也是內建ctags的,但是那個不好用,可以重新安裝

brew install ctags

如果安裝失敗,看是不是因為/usr/bin/ctags檔案已經存在,可以先mv走,然後再執行

建立索引:在你代碼的根目錄執行如下命令,會產生一個tags檔案,此時在代碼根目錄下開啟一個檔案(vim預設只載入工作目錄下的tags檔案),將游標置於一個函數或結構體名字上,按ctr+]即可跳轉到該名稱的定義處,如果出現多個選項,可以輸入編號選擇對應跳轉的地方,按ctr+o可回到游標之前的位置

ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++
taglist

taglist是vim的一個外掛程式,可以將代碼內的函數、變數等按規律列出來,方便尋找

下載地址
http://www.vim.org/scripts/script.php?script_id=273,或者直接按如下方式下載並安裝

cd ~/.vim/bundle && wget "http://www.vim.org/scripts/download_script.php?src_id=19574" -O taglist.zip && unzip taglist.zip -d taglist

這樣就產生了~/.vim/bundle/taglist目錄,該目錄的結構為

taglist├── doc│   └── taglist.txt└── plugin    └── taglist.vim

其中plugin目錄下為外掛程式檔案,doc目錄下為說明文檔。開啟vim,在命令列模式下輸入:helptags ~/.vim/bundle/taglist/doc可以載入說明文檔,然後輸入help taglist.txt則可以顯示說明文檔

配置
開啟~/.vimrc,輸入如下內容

let Tlist_Show_One_File=1    “ 只展示一個檔案的taglistlet Tlist_Exit_OnlyWindow=1  “ 當taglist是最後以個視窗時自動結束let Tlist_Use_Right_Window=1 " 在右邊顯示taglist視窗let Tlist_Sort_Type="name"   “ tag按名字排序

這幾行配置看名字就能知道什麼意思,引號後邊是說明,在vim設定檔裡,雙引號代表注釋,類似於C語言裡的/

測試
開啟一個檔案,在命令列模式下輸入:TlistToggle即可顯示taglist視窗,配合NERDTree一起效果如下
OmniCppComplete

這是一個對C++進行文法補全的外掛程式,可以對函數、命名空間、類成員等進行補全,使用起來和絕大多數IDE差不多,不一樣的是IDE為你做了很多你不知道的事情,而omni補全需要依賴tags檔案,需要你用ctags命令自己產生

下載地址

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.