從開始适用VIM已經快半年了,經過半年的打造和熟悉,VIM已經成為我工作生活中不可分開的一部分!現在使用WORD、或者在其他人的機子上使用!SourceInsigh等工具時候都忍不住按ESC、HJKL! 在使用過程中,我也貢獻了一個插件,funprototypes.vim,可以自動添加函數原型到程式中!
VIM真的是個非常強大的工具,介紹一篇博文<>, url:http://hi.baidu.com/jiqing0925/blog/item/ff30eb11f6671d6ccb80c42d.html,
,在這篇博文中你就會知道VIM和Emacs被稱為神器的原因。存在即合理,VIM和Emacs存在這麼長的時間肯定是有它們的道理的,VIM的入門門檻比較高,但是當你真正融入到其中時,你就會驚歎其強大!
廢話不多說,現在就介紹把VIM打造成一個C/C++ IDE 需要如何設定,添加什麼插件!
* 1. IDE類插件
首先要形似,形似則神似,一般的IDE(就拿SourceInsight來說)一般有檔案導航,函數清單,搜尋結果等視窗。在VIM你也可以同樣的實作。
* NERD_tree & project
NERD_tree:http://www.vim.org/scripts/script.php?script_id=1658
project :http://www.vim.org/scripts/script.php?script_id=69
這2個插件一般出現在IDE的左邊,通過這2個插件可以友善的定位到想要編輯的檔案。NERD_tree就是檔案浏覽器,project就比較像其他IDE。對于小型的系統,NERD_tree就可以了,project就比較麻煩,需要自己添加一些資訊,但是它比較靈活,可以對檔案進行分類。個人适用意見:project一開始覺得有點用,到後面用着用着就覺得沒什麼用,如同滇狐說的,食之無味,棄之可惜,對于小系統來說有NERD_tree足矣,對于大的系統來說,其又顯得更不靈活了。
還有一個非常棒的定位編輯檔案的插件是lookupfile.vim. 可以在快速查找檔案, 這個插件對于大型的系統來說是非常有幫助的,不過使用也稍微有點小小麻煩,要生成一個tags檔案,具體怎麼操作可以參看易水部落格的博文:http://easwy.com/blog/archives/advanced-vim-skills-lookupfile-plugin/. 還有一個功能比較強大的查找插件是fuzzfinder.vim, 不過我用習慣了lookupfile.
* taglist.vim
http://www.vim.org/scripts/script.php?script_id=273
這個插件可是常年雄霸vim下載下傳榜第一名。通過設定可以在vim右邊顯示定義的全局變量、宏定義、函數等!非常容易在檔案中進行定位。
* quickfix
這個插件已經內建到vim中了,可以顯示搜尋結果,編譯結果等。可以像IDE一樣按一個鍵就可以到下一個結果。非常友善!
* srcexpl
這個插件在螢幕下方開一個小視窗,當你把光标移動到函數名或者變量會在這個視窗顯示其定義。這個插件是我們中國人開發的。也很棒!
* bufexplore tabbar
tabbar在螢幕最上端顯示打開的檔案清單。bufexplore可以管理打開的檔案。用這2個插件的時候最好設定set hidden。設定隐藏緩存
智能提示是IDE不可缺少的一個功能,VIM也能完成這個功能。智能提示的插件有好多個,通過很多個插件結合可以快速的提示,加快開發速度。
智能提示一般都會依賴Ctags或者cscope, ctags和cscope不是vim插件,它們是獨立的程式,它們的作用就是掃描檔案,提取符号集,記錄其所在的位置。所有的IDE都有這樣的程式,它們一般都運作在背景,當你改變檔案時,它們也更新符号集資料庫。VIM唯一讓我不爽的就是這點,它沒有背景程式來記錄這些改變,需要手動更新。當你處理一個大型的系統時候更新一次又非常慢,ctags不支援增量,但是很多的插件都依賴它。這點真的很讓人蛋疼!不過還好有緩存提示,就是你目前編輯的檔案中的符号集都會被自動搜集起來,這樣你沒有手動更新的情況下也會提示。
* AutoComplPop & neocomplcache
這2個插件選其一,acp比較輕量級,neocomplcache功能比較強大,我用的是 neocomplcache. 有了這二個插件會自動彈出提示,而不要按. 大大減少了按鍵次數。
* supertab
按tab鍵可以完成自動補全
* code_complete
這個插件在寫函數的時候很有用,當你不知到函數原型時,按映射的鍵可以顯示出原型,如果你忘了原型這樣就不必去檔案中找。
比如定義了一個函數int foo(int a, int b)
當你輸入foo(, 按快捷鍵(預設是tab,安裝來acp或者neocomplcache要改下)便提示foo(`` , ``) , 是不是很強大?(前提是要生成tags檔案)
* snipMate
當輸入很少的幾個字元再輸入定義的快捷鍵就可以讓VIM幫你輸出事先定義好的片段
舉例:輸入pr按映射的快捷鍵便提示:printf("%s/n");
* c.vim
功能非常強大,包含snipMate的功能(不過還是snipMate好用),還有注釋,編譯,splint等功能。建立新檔案時自動添加檔案注釋等!
* OmniCppComplete
這個主要是針對類、結構體,當輸入“.""->"時會彈出其成員函數、成員變量或者結構體成員!當然也要有tags檔案!
* a.vim
在.h .c cpp 中切換! 友善在頭檔案和源檔案中切換!
* crefvim.vim
可以友善的檢視标準C的文檔,當你不知道使用某個标準庫的函數要哪個頭檔案時,不知道需要什麼參數時,按cr便很輕松的可以知道!
* DoxygenToolkit.vim
把光标移到函數名上,輸入指令:Dox便可以在函數上面添加這個函數的注釋,參數的說明等。
* SingleCompile.vim
當你隻是想證明一個小函數的功能,又覺得寫makefile太麻煩時,這個插件就剛剛好啦!
* svncommand.vim && vcscommand.vim
這2個插件用來做版本控制,svncommand隻适用于svn, vcscommand則适用許多版本控制工具。
* EnhancedCommentify.vim
适用于各種語言的注釋,隻需要記住一個快捷鍵,就可要注釋或取消注釋多種語言。very good!
* funprototypes.vim
http://www.vim.org/scripts/script.php?script_id=3459
嘿嘿,該插件就是由小弟我完成的啦。這個插件隻适用于C語言,輸入fd就可以把函數的原型添加到第一個函數前,或者自定義位置,當你修改了參數後也隻要按快捷鍵,插件便會自動幫你修改!是不是也很友善呢?
* headerguard.vim
自動幫你添加頭檔案.h的重複宏定義的預定義。
* valgrind.vim
valgrind是個非常強大的檢查記憶體洩漏的工具,使用這個插件後便和vim結合在一起,當檢測出錯誤後便會顯示在quickfix清單中,可以很友善的定位問題!
2 工具類
* SearchComplete
當你查找一個單詞,而單詞又不在目前頁面,或者你不想輸太多字母,這個插件就幫你的忙了,隻要輸入開始幾個字母,按tab鍵便會自動補全!
* mark.vim
vim自帶的搜尋隻能高亮顯示一個,這個插件可以高亮顯示高達6個!
* visualmark
讓你快速的在檔案中跳轉,按mm标記這一行,當你想回到這一行時,按立刻就到!
* highlight_current_line.vim
高亮目前行
* sketch.vim
在檔案中畫圖,還蠻好玩的。隻支援gvim, 終端模式下貌似不支援!
* matchit.vim
在vim中按%号可以自動快速跳轉到比對的(),{}, 它擴充了功能,使他可以适用在更大的範圍!
* vimwiki.vim
讓你打造自己的維基百科!越用你會越喜歡它!
* calendar.vim
在vim中寫日記!它結合了vimwiki的功能,這樣就更完美了!
* pathogen.vim
管理插件,當越來越多的插件安裝的時候就會發現它的好處了,當你想删除一個插件,但是這個插件又分布在各個檔案夾中,有了這個插件,一切都簡單了,凱撒的歸凱撒,耶稣的歸耶稣,屬于這個插件的檔案都在一個檔案夾中,直接把這個檔案删除就OK了。
3 娛樂
在VIM中也可以玩遊戲,這在别的IDE中不能辦到吧!
* tetris
俄羅斯方塊!不過很快就會挂的。建議新手玩,可以讓你很快熟悉VIM的方向鍵!
* sokoban
推箱子遊戲!
* MinesPlugin
掃雷!
4 總結
也許你對VIM和Emacs是神器還有寫懷疑,但是隻要你配置好你的VIM,你就越來越離不開它的。神器是需要打造的,VIM的入門門檻的确比較高,熟悉它的确需要花費一些時間,但是磨刀不誤砍柴功,打造好神器後至少讓你的編輯效率高50%! It will change you life!
還有一些其它的插件也是很好用的,eclim就把VIM和Eclipse結合在一起,Java開發者可以試試!對于VIM的适用,建議大家多去易水部落格,這個部落格裡面對VIM的使用介紹得非常的詳細!
====
http://blog.csdn.net/wuhong40/article/details/6245410