對於一個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 init git 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 init git submodule update // 最后,使用.vimrc cd ~/.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吧。