誰說Vim不是IDE?(三)
常用插件
之所以說Vim形成了自己的生態環境,就是因為Vim具備開放的插件體系,開發者為了提升開發效率,為Vim編寫了數以萬計的插件,我們可以根據需要任意選擇,也可以基于Vimscript語言開發自己的專屬插件。
每個插件都是以Vim為后綴的腳本文件,編寫插件的語言一般采用Vimscript。Vimscript是Vim自己的編程語言,我們在后續會介紹到它。盡管Vimscript幾乎為可以Vim做任何事,但還是會存在一些場景,用其他語言更好更快。考慮到這一點,Vim的開發者為其他腳本語言設計了接口,用來編寫Vim插件,比如Perl,Python和Ruby,后續我們會演示如何使用python語言為Go語言編寫Vim插件,在Vim中執行Go程序。
常用插件分為四種:
- 通用插件:適用于所有類型的文件,在使用Vim的時候可以通過插件命令呼出。比如用來快速定位文件的插件CommandT,使用
:CommandT即可啟動該功能,對任何類型都適用。該類插件一般放置在.vim/plugin/目錄下。 - 文件類型插件:適用于特定類型的文件,比如c、java、xml等文件。在編輯特定類型的文件時,插件功能才會啟用,該類插件一般放置在.vim/ftplugin/目錄下。比如我們常用的編輯xml/html/jsp等文件的插件xmledit,安裝了該插件后,編輯xml文件時,鍵入
<modules>,當完成了最后的>時,xmledit會自動為你添加閉合標簽,<modules></modules>,如果輸入了最后一個>,標簽會自動展開,方便輸入子標簽或文本內容。這時如果你用Vim打開一個txt文件,這些功能就消失了。當然,xmledit功能遠不止這么簡單,我們稍后再詳細介紹。 - 語法插件:顧名思義,語法插件主要為編程語言提供語法高亮功能,一般放置在.vim/syntax/下。Vim已經默認提供了大部分語言的語法高亮功能,但對于一些比較新的語言,就需要開發者編寫支持語法高亮的插件,比如Go語言。
- 編譯器插件:針對不同語言編寫的編譯器插件,主要用來設定相關語言的編譯器選項。比如針對C、C++、Java、Python等可以編寫各自的編譯器插件,插件內容并不復雜,主要定義"errorformat"(錯誤格式定義)及"makeprg"(編譯程序和參數)的內容即可。通過
:make可以編譯正在編輯的文件。
了解了Vim插件的基本概念,再來講下面的這些常用插件,就比較容易理解了。
pathogen
我們首先來介紹這款用來管理插件的插件——pathogen。
1、下載地址
https://github.com/tpope/vim-pathogen
2、功能說明
一個插件包往往具備多種功能,每個文件根據Vim的路徑約定會放置到不同的目錄下,通用插件放到plugin下,語法高亮插件放到syntax下,自動加載插件放到autoload下,文件類型插件放到ftplugin下,編碼格式插件的放到indent下......如果你是重度插件用戶,你會發現在.vim主目錄下會有一堆文件夾,無論是你想要安裝新插件,還是想刪除舊插件,都非常麻煩,你不得不在每個文件夾下找相關的vim文件。
pathogen是管理插件的插件,主要用來解決上述問題。pathogen采用了bundle的概念來管理插件,如果你熟悉OSGi或OS X,那么對bundle就不會陌生。OSGi以bundle的形式封裝Java程序和資源文件,而OS X中的大部分應用程序都是bundle,正是bundle的概念讓OSGi可以動態管理Java組件,OS X安裝大部分程序都是“綠色安裝”。
pathogen在.vim目錄下建立bundle文件,所有的插件都會在該目錄下管理。當Vim啟動時,會自動執行runtimepath(rtp)列表中所包含文件夾下的vim腳本,pathogen會在啟動時把./vim/bundle下的文件夾中的插件按照一定順序遞歸加載到rtp中,這樣Vim啟動時,通過pathogen管理的插件就生效了。
有了pathogen之后,一般.vim文件夾下只有三個文件夾:autoload、bundle和doc,其他插件將被安裝在bundle文件夾下,如圖所示:

如無特殊說明,后面提到的插件都采用pathogen方式安裝,我會以NERDTree插件為例說明安裝方式。
3、安裝
- 在
.vim文件夾下建立autoload和bundle目錄 - 從下載地址獲取pathogen.vim文件,將其復制到autoload目錄下
-
在
.vimrc文件中增加如下代碼:call pathogen#infect()
4、使用說明
無
5、注意事項
新插件安裝到bundle目錄下后,如果插件中包含doc,則需要在Vim中運行:Helptags來生成在線幫助tags。
NERDTree
我們在介紹pathogen的時候,用一張圖展示了插件的目錄結構,這個目錄結構就是基于NERDTree插件實現的。
1、下載地址
https://github.com/scrooloose/nerdtree
2、功能說明
NERDTree是Vim最常用的插件之一,可以在Vim運行時顯示目錄和文件結構,類似TextMate左側的文件瀏覽器,但操作起來更為方便,你可以在手不離開鍵盤的情況下快速瀏覽文件,并在文件和文件夾之間進行切換。
3、安裝
- 進入
.vim/bundle目錄 - 執行
git clone git://github.com/scrooloose/nerdtree.git - 下載完成后,在bundle下會多出一個nerdtree的文件夾,所有相關插件都在該文件夾下
- 在Vim中運行
:Helptags來生成NERDTree的在線幫助tags
4、使用說明
打開Vim,輸入:NERDTree,即可呼出執行Vim命令的當前目錄的文件目錄。為了方便使用,我在.vimrc中定義了快捷鍵,可以用Ctrl+t打開NERDTree,你可以定義自己習慣的快捷鍵。
NERDTree提供了豐富的鍵盤操作方式來瀏覽和打開文件,我簡單介紹一些常用的快捷鍵:
和編輯文件一樣,通過h j k l移動光標定位
o 打開關閉文件或者目錄,如果是文件的話,光標出現在打開的文件中
go 效果同上,不過光標保持在文件目錄里,類似預覽文件內容的功能
i和s可以水平分割或縱向分割窗口打開文件,前面加g類似go的功能
t 在標簽頁中打開
T 在后臺標簽頁中打開
p 到上層目錄
P 到根目錄
K 到同目錄第一個節點
J 到同目錄最后一個節點
m 顯示文件系統菜單(添加、刪除、移動操作)
? 幫助
q 關閉
想了解更多操作方式,可以通過? 查看詳細的幫助信息。
Command-T
1、下載地址
https://wincent.com/products/command-t
2、功能說明
Command-T是一個基于Ruby和C擴展實現的快速文件瀏覽的插件,類似TextMate的Go to File(Command+T呼出)功能,或Eclipse的Open Resource(Command+Shift+r)功能,可以通過模糊匹配快速定位并打開文件。
3、安裝
- 從下載地址下載最新版本的vba文件,目前最新版本是1.4,所以安裝文件是command-t-1.4.vba
- 在
~/.vim/bundle目錄下創建文件夾command-t - 用Vim打開command-t-1.4.vba
- 執行
:UseVimball ~/.vim/bundle/command-t -
進入ruby目錄下編譯C擴展
cd ~/.vim/bundle/command-t/ruby/command-t ruby extconf.rb make
4、使用說明
輸入:CommandT可進入文件快速定位功能,如圖所示:

- ctrl+j/k 上下選擇文件,選中后回車打開文件
- ctrl+t 以tab方式打開文件
- ctrl+s/v 可以水平或垂直分割窗口打開文件
- ctrl+c 退出該模式
該插件還有個常用命令,:CommandTBuffer,可以瀏覽緩沖區的文件,并重新打開。操作方式同上。
5、注意事項
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
1、下載地址
https://github.com/Lokaltog/vim-powerline
2、功能說明
Powerline是Vim的一個非常漂亮的狀態欄插件,安裝了Powerline之后,Vim底部將會出現一個增強型狀態欄,當Vim處于NORMAL、INSERT、BLOCK等狀態時,狀態欄會呈現不同的顏色,同時狀態欄還會顯示當前編輯文件的格式(uft-8等)、文件類型(java、xml等)和光標位置等,喜歡的就裝。
如圖所示:

3、安裝
- 進入
.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' "}
4、使用說明
安裝之后,再次打開Vim,你就會發現底部已經多了一個彩色的狀態欄了。
未完待續,第四篇擬講ctags、taglist、foldmethod、xmledit、visualmark、vim-markdown等,第五篇擬講python、go相關的插件,第六篇講vim編程技巧,第七篇......
身邊越來越多的人開始使用Mac,經常被問道Mac的使用問題和技術問題。遂決定,每天發布一則#Mac技巧#。同時發布于微博和微信公眾賬號“Mac技巧”,微信號sagacity-mac,有微信賬號的童鞋掃描下圖片或搜索微信號即可

浙公網安備 33010602011771號