對於一個vimer來說,vim外掛程式的管理其實是一個問題。
對於一個喜歡重裝系統的vimer來說,vim外掛程式的管理其實是一個很重要的問題。
對於一個喜歡又喜歡嘗鮮最新外掛程式又喜歡重裝系統的vimer來說,vim外掛程式的管理其實是一個更重要的問題。
所以,我想說的是,vim外掛程式的管理,對於不同程度的人群有不同的重要性,我相信這真的是vimer要解決的一個重要的問題。
1. vim外掛程式的管理的幾個問題
vim外掛程式的管理到底是解決什麼問題?
(1). 記錄存檔;
把你的個人化(.vimrc),使用的哪些外掛程式,或者一些操作,或者自己整理的文檔,能夠有所記錄存檔,能夠隨時查閱。
(2). 雲備份;
雲備份相對於本地儲存更安全,同時通過網路,我們能更方便在任何時間任何地點擷取的到。
重裝系統,格式化,以後通通不怕忘記備份了。
(3). 能更新;
以最簡單的方式,就能使用最新的外掛程式,第一時間享受最新的改進。
(4). 簡單方便;
只需要最簡單的幾部操作,就能在任何時間在任何電腦複製出你電腦上一模一樣的vim運行環境。
絕對簡單,絕對方便,這也是我們要追求的特性。
2. 使用git submodule和pathogen
有一個解決方案,能解決上面提出的幾個問題。
外掛程式的管理,有一個著名的vim外掛程式pathogen能夠實現方便的管理。
備份記錄,則可以使用git版本控制工具在github上實現。
結合git中的submodule特性,我們能夠實現外掛程式的外掛程式化,保持他們的獨立性,進而實現外掛程式的隨時更新。
3. git和github
這一步其實是本文的一個基礎條件,也感謝github提供了這麼一個好的大環境。
git提供了版本管理,以便以後隨時更新和修改。
github相當於提供了雲端的備份,隨時隨地都可以恢複,最主要的是對git的完美支援。
結合git和github能夠對本地外掛程式和整個環境納入一個良好的管理體系,簡單強大,安全可靠。
4. 外掛程式管理pathogen外掛程式
這個外掛程式帶來的好處就是,每個外掛程式能夠獨立的放到bundle下對應的目錄下,所有的外掛程式很獨立,很乾淨。
pathogen的源碼地址:https://github.com/tpope/vim-pathogen
在上面詳細講述了pathogen的使用方法,我不累述。
只是說明一下,這個外掛程式式需要修改.vimrc的,所以後續我們需要提供一個.vimrc的更新方法,後面會說這個問題。
5. 使用git submodule
git submodule實現把外掛程式作為第三方版本庫嵌入我們的版本庫,而我們只需要付出管理一個版本庫的精力。
因為外掛程式基本上都是別人提供了,而且現在vim scripts都遷移到了github上,我們只需要從github上clone下來就可以了。
但是每個外掛程式都是一個獨立的版本庫,如果簡單的分開複製,獨立管理會造成本地也會有很多版本庫。
使用git submodule只需要建立一個版本庫,而把這些外掛程式的版本庫只是當做這個版本庫的子模組,這樣既能實現管理的簡單,有能分別進行獨立的升級。
git submodule的使用方法:
// 增加一個模組git submodule add <url> <local path>// 更新模組git submodule initgit submodule update
6. 布局
結合上述所說,我們給這個工程取名叫openvims為例,它的布局,也就是目錄結構如下:
前面提到的.vimrc的管理問題在這裡通過Install.sh也解決了。
7. 驗證
我已經在github上搭建了這個工程,取名openvims,地址:
https://github.com/openproject/openvims
驗證步驟如下:
// 首先,我們要做的就是clone成本地.vim目錄git clone https://github.com/openproject/openvims.git ~/.vim// 其次, 更新各vim外掛程式模組git submodule initgit submodule update// 最後,使用.vimrccd ~/.vim./Install.sh
兩三步搞定了,現在你可以享受openvims帶來的便利了。
開啟vim試試看,是不是有效果了。
8. 修改和升級
修改檔案,使用git常規方法提交,上傳到伺服器即可。
如果要增加新的vim外掛程式,使用如下命令:
// 以nerdtree為例,在.vim目錄下執行git submodule add https://github.com/scrooloose/nerdcommenter.git bundle/nerdcommenter
如果更新外掛程式的話,update即可
// 在.vim目錄下git submodule update
如果刪除目錄的話,刪除bundle下的外掛程式的檔案夾,然後手動修改.gitmodule,只能這樣了,最後記得提交到伺服器上去。
9. 幾個外掛程式說明
(1).supertab
這個外掛程式是我的最愛,easy完成你的自動完成。
裝vim外掛程式,我是第一個裝這個外掛程式(不算vim外掛程式管理外掛程式pathogen)
(2).file-line
很方便的一個小外掛程式,讓你直接開啟檔案並跳到某一行,你唯一要做的就是在檔案參數後附加":number",number表示你的行數。
應用情境:
比如在某工程下使用jgrep尋找Browser字串,結果如下
在316行有一個結果,安裝此外掛程式後,我們可以直接使用如下命令跳到316行:
vim ./src/com/android/mms/ui/MessageListItem.java:316
(3).nerdtree
樹形工程瀏覽視圖,很好用,效果如,這個外掛程式的官方說明文檔很詳細,這裡就不多說。
針對工程用nerdtree開啟的問題,我有個小小的經驗之談。
(3.1).你可以使用vim +NERDTree就能快速以nerdtree開啟目前的目錄
(3.2).使用別名,快速在任何地方開啟某一工程,舉例:在.bashrc中定義alias openpro='cd /workspace/project; vim +NERDTree'後,在任何目錄執行openpro就能開啟workspace目錄下的project這個工程了。
(3.3).配置快速鍵,比如F2等。
(4).nerdcommenter
快速注釋的外掛程式,習慣使用之後還真離不開這個外掛程式了,"\" + "c" + " ",現在用的挺順手的了。
(5).tabular
對齊外掛程式,很方便。
行選擇,然後:Tabularize/=,則把所選行的=全部對齊。在寫代碼定義變數的時候還是經常用到的。
不多說,截個圖看看效果吧:
(6).space
使用空格重複外掛程式,很聰明的一個外掛程式,比.要強大,.只是重複上一個edit motion。
小外掛程式,用過之後相信你會喜歡的。
後續有什麼好用的外掛程式,我會補充添加,也歡迎大家回複推薦一些好用的vim外掛程式。
10. 小結
vim的外掛程式提供了強大的擴充,但是如同工具的Setting設定檔(不過更複雜一些),每類人總是有自訂的方案,並且希望把這個自訂的配置方案能夠儲存。
對於vim外掛程式,因為多而繁,又最好能夠升級,本文提供了一個簡單的方案,希望能協助到一些vimer吧。