誰說Vim不是IDE?(三)

來源:互聯網
上載者:User
文章目錄
  • pathogen
  • NERDTree
  • Command-T
  • Powerline
常用外掛程式

之所以說Vim形成了自己的生態環境,就是因為Vim具備開放的外掛程式體系,開發人員為了提升開發效率,為Vim編寫了數以萬計的外掛程式,我們可以根據需要任意選擇,也可以基於Vimscript語言開發自己的專屬外掛程式。

每個外掛程式都是以Vim為尾碼的指令檔,編寫外掛程式的語言一般採用Vimscript。Vimscript是Vim自己的程式設計語言,我們在後續會介紹到它。儘管Vimscript幾乎為可以Vim做任何事,但還是會存在一些情境,用其他語言更好更快。考慮到這一點,Vim的開發人員為其他指令碼語言設計了介面,用來編寫Vim外掛程式,比如Perl,Python和Ruby,後續我們會示範如何使用python語言為Go語言編寫Vim外掛程式,在Vim中執行Go程式。

常用外掛程式分為四種:

  1. 通用外掛程式:適用於所有類型的檔案,在使用Vim的時候可以通過外掛程式命令呼出。比如用來快速定位檔案的外掛程式CommandT,使用:CommandT即可啟動該功能,對任何類型都適用。該類外掛程式一般放置在.vim/plugin/目錄下。
  2. 檔案類型外掛程式:適用於特定類型的檔案,比如c、java、xml等檔案。在編輯特定類型的檔案時,外掛程式功能才會啟用,該類外掛程式一般放置在.vim/ftplugin/目錄下。比如我們常用的編輯xml/html/jsp等檔案的外掛程式xmledit,安裝了該外掛程式後,編輯xml檔案時,鍵入<modules>,當完成了最後的>時,xmledit會自動為你添加閉合標籤,<modules></modules>,如果輸入了最後一個>,標籤會自動延伸,方便輸入子標籤或常值內容。這時如果你用Vim開啟一個txt檔案,這些功能就消失了。當然,xmledit功能遠不止這麼簡單,我們稍後再詳細介紹。
  3. 文法外掛程式:顧名思義,文法外掛程式主要為程式設計語言提供文法高亮功能,一般放置在.vim/syntax/下。Vim已經預設提供了大部分語言的文法高亮功能,但對於一些比較新的語言,就需要開發人員編寫支援文法高亮的外掛程式,比如Go語言。
  4. 編譯器外掛程式:針對不同語言編寫的編譯器外掛程式,主要用來設定相關語言的編譯器選項。比如針對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、安裝
  1. .vim檔案夾下建立autoload和bundle目錄
  2. 從擷取pathogen.vim檔案,將其複製到autoload目錄下
  3. .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、安裝
  1. 進入.vim/bundle目錄
  2. 執行git clone git://github.com/scrooloose/nerdtree.git
  3. 下載完成後,在bundle下會多出一個nerdtree的檔案夾,所有相關外掛程式都在該檔案夾下
  4. 在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-T1、

https://wincent.com/products/command-t

2、功能說明

Command-T是一個基於Ruby和C擴充實現的快速檔案瀏覽的外掛程式,類似TextMate的Go to File(Command+T呼出)功能,或Eclipse的Open Resource(Command+Shift+r)功能,可以通過模糊比對快速定位並開啟檔案。

3、安裝
  1. 從下載最新版本的vba檔案,目前最新版本是1.4,所以安裝檔案是command-t-1.4.vba
  2. ~/.vim/bundle目錄下建立檔案夾command-t
  3. 用Vim開啟command-t-1.4.vba
  4. 執行:UseVimball ~/.vim/bundle/command-t
  5. 進入ruby目錄下編譯C擴充

      cd ~/.vim/bundle/command-t/ruby/command-t  ruby extconf.rb  make
4、使用說明

輸入:CommandT可進入檔案快速定位功能,:

  1. ctrl+j/k 上下選擇檔案,選中後斷行符號開啟檔案
  2. ctrl+t 以tab方式開啟檔案
  3. ctrl+s/v 可以水平或垂直分割視窗開啟檔案
  4. 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

Powerline1、

https://github.com/Lokaltog/vim-powerline

2、功能說明

Powerline是Vim的一個非常漂亮的狀態列外掛程式,安裝了Powerline之後,Vim底部將會出現一個增強型狀態列,當Vim處於NORMAL、INSERT、BLOCK等狀態時,狀態列會呈現不同的顏色,同時狀態列還會顯示當前編輯檔案的格式(uft-8等)、檔案類型(java、xml等)和游標位置等,喜歡的就裝。

3、安裝
  1. 進入.vim/bundle目錄
  2. 執行git clone git://github.com/Lokaltog/vim-powerline.git
  3. .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編程技巧,第七篇......

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.