在Linux系統下進行開發的時間零零散散算起來也有將近一年半了,剛開始的時候用的最原始的VIM進行簡單的代碼編輯,那段時間讓我熟練了VIM的命令、編輯模式切換,方向移動和命令模式下的經常使用命令,第一次認識到了VIM的強大。以後參與的項目開發,雖然說使用的是Linux系統,可是應用代碼的主要編輯工做是在Source Insight下完成的,VIM用的也就少,慢慢地用起來有點手生。可是心裏對於VIM的那種簡潔、直接和高效依然依依不捨,經常會溫習VIM的命令和技巧,一直在找機會掌握VIM進行完成的項目開發。直到這個項目,環境、機會(天時、地利、人和)俱全,我進入了狀態~~shell
如今的Linux發行版基本都已經裝好了VIM,若是沒有,那就須要本身進行安裝,最好是VIM7.0以上版本,不過大多數發行版的源默認都是最新版本,除非是本身使用源碼按照,就須要注意。數據庫
VIM的配置文件:.vimrc,通常都是在用戶的home主目錄下,該文件決定了VIM啓動時的基本環境和可以使用命令、工具等,在VIM的使用中具備舉足輕重的地位。網絡上有不少大能的.vimrc文件提供參考、下載,大都很是地複雜,強大,並且與系統環境和其使用的插件高度關聯,所以在下載他們的文件使用時,最好是確保環境一致,不然不少功能會使用不了,偶爾還可能會出一點莫名其妙的問題。在稍後的文章中我會貼出本人稍顯粗糙的.vimrc。vim
VIM的強大在於它的高度可定製性,你徹底能夠將它打形成屬於你我的的編輯器或者說IDE,這是經過大量的插件和.vimrc配置文件協同實現的。在VIM的官網上你能找到各類插件,若是沒找到你須要的,你還能夠直接開發插件,而後提供給他人使用。本人還沒到這個水平,在這推薦幾款經常使用的插件給你們:windows
這些插件在VIM官網上都能找到,下載最新版本就能夠,而後就是插件的安裝了。VIM在用戶的主目錄下須要一個運行時目錄:.vim/,若是沒有就手動建立,以後把下載的插件所有解壓到.vim/目錄裏面,就完成了插件的安裝。這個時候在.vim/目錄下至少會有兩個目錄:doc/ 和 plugin/,doc目錄存放各插件的幫助文檔,plugin目錄存放各插件的功能實現vim 腳本。可是對於lookupfile插件,正確安裝的話,在.vim/下還應該有一個autoload/目錄,裏面存放有lookupfile 和genutils插件的autoload版本vim腳本,它們定義了plugin/目錄中lookupfile和genutils腳本使用的一些函數。若是沒有autoload目錄,lookupfile插件將沒法使用,會提示相似錯誤:「E117:Unknown Function lookupfile#OpenWindow(...)"。所以若是你安裝完畢後,發現沒有autoload目錄,你須要手動建立該目錄,而後將lookupfile插件和genutils插件包中的autoload版本vim腳本拷貝進去。網絡
插件幫助文檔的生成:使用vim時,必需要掌握的技能之一就是熟練使用vim的在線幫助文檔,在裏面能找到你所須要的一切,但你要知道你想知道的東西是什麼。上述的各個插件都有完善的幫助文檔,但須要將它們添加進vim的在線幫助系統中,以方便查找。這一步很簡單:編輯器
敲回車執行命令以後就OK了,如今能夠查看一下lookupfile的幫助: :help lookupfile.函數
配置好.vimrc文件後,到此爲止VIM自身的環境就準備完畢了,接下來就是外部輔助開發環境。工具
單獨VIM一個工具老是不夠的,UNIX中的哲學是每個工具專注地完成一件小事,多個工具的聯合完成一件大事,從而用有限的工具實現無限的可能。VIM主要是把編輯這一件事實現到極致,經過插件提供一些額外的便利加強編輯,但對於代碼的結構化、數據庫化管理顯然超出了VIM的功能範疇,須要更專注的工具來完成,這就是Ctags 和 Cscope工具。插件
ctags工具提取代碼文件中的全部tag,包括全局變量、宏、函數、數據類型等,記錄這些tag在文件中的位置和交叉引用,以提供在代碼中進行這些tag之間的跳轉,方便追本溯源。code
cscope工具也是提取代碼文件中的全部tag,可是它記錄的數據更詳細,經過掃描tag在文件中的使用,創建一個數據庫,從而提供查找定義、函數調用及被調用、文本、頭文件等更復雜強大的搜索功能。
進行項目開發時,這兩個工具幾乎不可缺乏,VIM+Ctags+Cscope通常也是項目開發的總體環境(本人如今的開發環境),這個環境已經能夠完成一個IDE的開發必備工做了。關於ctags和cscope工具的下載、安裝就不在此詳述了,安裝好之後,能夠經過如下的命令查看對應的幫助手冊:
<!-- lang: shell --> man ctags man cscope
在以後的文章中我會寫一個使用這兩個工具的shell腳本,以進行項目開發過程當中的管理和更新。