從初次接觸VIM,到現在已經有好些年時間了。在軟件開發中使用VIM,不過是近兩年的事情。對VIM的了解遠遠算不上深入,不過還是把自己使用VIM的一些經驗寫出來,希望對VIM的推廣做一份貢獻。
本系列文章主要介紹我自己在使用VIM開發軟件項目的一些經驗。本篇是序章,務虛為主。
在使用VIM進行軟件開發之前,我使用的工具是Source Insight,相信大家并不陌生。Source Insight是一個比較不錯工具,特別是在瀏覽代碼方面。在面對成百上千個文件組成的陌生源代碼時,使用Source Insight可以讓你很快的了解軟件的主體流程、調用關系、類型定義……。使用Source Insight寫代碼也不錯,它的自動補全功能很強,似乎使用拷貝、粘貼,加上自動補全,就可以完成代碼了。不再使用Source Insight的原因有二,一是Source Insight只支持windows,不能在Linux上用;二是不想再用盜版的Source Insight。
在決定使用VIM前,也在VIM和EMACS猶豫了很久,最終懶惰的天性讓我放棄了EMACS:實在是不習慣在移動光標時,也要用兩只手按住CTRL/ALT/SHIFT再加個什么鍵;我的天性喜歡偷懶,能用一個手指做的事,不想用兩個手指完成。所以最終選擇了使用VIM。現在感覺,VIM和EMACS在文本編輯方面不分伯仲。EMACS的優勢,在于它的可擴展性,使它可以完成很多和文本編輯無關的事情;不過這也造成了它的過于龐大。
剛改用VIM,最不適應的是不能再用鼠標“指哪兒打哪兒”了(VIM當然支持鼠標,只是雙手在鍵盤、鼠標間切換,很是影響效率),然 后是拷貝、粘貼,然后是查看調用關系,函數間跳轉,再然后……總之,剛開始的一段時間非常痛苦,效率也非常的低,甚至總是想著放棄。經過這段時間以后,逐 漸摸到一些竅門,也漸漸的知道到哪里去尋求幫助,在哪兒可以找到VIM的資源,工作效率一點點提升了上來。到現在,工作中已經離不開VIM了,VIM成了 計算機中缺省的文本編輯工具!
其實,對VIM和EMACS這樣的工具來說,它們最強大之處,在于它們的可定制性。由于它們的可定制性,你完全 可以定制出一個符合你自己編輯習慣的編輯器,在這樣一個編輯器里,你的工作效率將達到最高。當然,要達到這樣的境界,你需要付出非常堅苦的努力!如果你的 工作是以文本編輯為主,例如,你是一個程序員,那么付出這種努力是值得的,也是有回報的。如果你沒有很多文本編輯工作要做,那么也沒有必要耗費這么大的力 氣,來學習這些工具。
最后對VIM的初學者提一些建議:
1. 如果你的工作以文本編輯(不是指Microsoft word中的文本編輯)為主,那么學習VIM或EMACS是值得的;
2. 剛開始使用VIM或EMACS的經歷是很痛苦的,因為它們可能完成不同于你已經習慣的windows編輯器。我的建議是:堅持下去!咬牙堅持下去!你會獲得回報的。
3. VIM的幫助文件,是學習如何高效使用VIM的重要資源,一定要多讀幫助文件。如果你是因為害怕讀英文的幫助文件而不肯學習VIM的話,那么,到http://vimcdoc.sourceforge.net/去看一下,那里有翻譯好的VIM 7.0的幫助文件,按照說明安裝好后,再使用“:help”命令,你就可以看到翻譯好的幫助文件了。如果你看到的還是英文的幫助文件,說明“helplang”選項設置的不正確(似乎在windows上,helplang選項被設置為大寫的Cn,而不是cn,所以無法看到中文的help文件)。使用“:set helplang=cn”命令重新設置一下helplang選項,然后再使用“:help”命令,就可以看到中文幫助文件了。或者你可以使用“:help xxx@cn”來查看xxx的中文幫助文件。
4. 如果你是第一次接觸VIM,那么執行一下“:help tutor”或“:help tutor@cn”,你就會看到一個30分鐘的VIM教程,會教會你VIM的一些基本命令。
5. 有時間的話,一定要閱讀一下Bram Moolenaar(VIM的主要作者)寫的Seven habits of effective text editing(七個有效的文本編輯習慣),你可以知道怎樣提高你的編輯效率。在http://vimcdoc.sourceforge.net/提供的PDF文件的附錄二,你可以看到它的中文譯本。
本系列文章都針對VIM 7.0版本,如果這里介紹的功能在你的VIM中不存在,不妨升級到VIM 7.0后再試一次。
我以Linux版本的VIM 7.0為例。VIM也有支持windows的版本,可以到http://www.vim.org/下載已經預編譯好的windows版本的VIM 7.0。
文章盡量不涉及具體的軟件源代碼,如果確實需要,則以VIM 7.0的源代碼為例。此代碼可以也可以在VIM的主頁上下載,我把它解壓在~/src/vim70目錄下。以后就以此目錄為例進行講解。
附 圖是我所使用VIM環境,在這副圖中,我打開了三個標簽頁,一個是主編程區,一個是打開的.vimrc文件,另外一個是草稿區。在主編程標簽頁中有幾個不 同的窗口,分別是當前打開的buffer,當前文件中的tag,help窗口,lookupfile窗口,src/main.c和src/edit.c。 其中使用了三個VIM插件(plugin):winmanager, taglist, lookupfile。
從這副圖中可以看到VIM的一些特性:多標簽支持、多窗口支持、插件支持、語法高亮功能、文本折疊功能……;這些特性,以及其它數不清的特性,我都將在后續文章中盡量給予介紹。

上圖是GUI界面的VIM,下圖是控制臺下的VIM的抓圖。這是我通常的開發方式:使用putty遠程登錄到linux服務器上,使用控制臺的VIM開發軟件:

對VIM的了解有限,請多請教。
[參考文檔]
1. VIM幫助文件
2. http://vimcdoc.sourceforge.net/