在Linux下我最習慣使用的程式編輯環境是vim(我在windows很少寫程式),或許過去習慣使用visual studio,Eclipse,Netbean或是相關IDE的人,會覺得怎麼會有人還會使用這種古董級的編程環境,它既難用,又少了一堆功能。但事實上真正會使用vim的人,他們的vim是可以比source insight這類的源碼追蹤環境還強大的。這篇文章我主要是來介紹「如何打造vim成為一個強大的編程環境」。這篇文章適合稍微對vim有一點瞭解的人來閱讀。
在開始之前我先讓大家看一下我的vim視窗截圖
這張圖內有幾個重點要觀察:
多檔編輯
這個功能是使用tabBar的vim plugin,將該plugin下載並放在~/.vimrc/plugin/後,在多檔編輯時該視窗會自動跑出來。切換視窗的方法大略為Ctrl+Tab Ctrl+Shift+Tab 及 Alt+[number]。
補充:在vim要開其他檔,可輸入:e 檔名來開啟其他檔。
Folding
Folding又可以叫程式碼摺疊,這個功能是預設就有的,詳細指令可參考gvim裡的工具列Tools->Folding,我平常不習慣使用這個功能,若要開啟我會設:set foldmethod=indent
字串搜尋及編譯訊息列表
這兩項功能的訊息列表是放在quickfix window,開啟方式為:copen關閉為:cclose。我的快速鍵為F4。另外要跳到下一個及前一個訊息的指令為:cnext :cprev。我的快速鍵為Ctrl+n及Ctrl+p。
字串搜尋的指令為:vimgrep [pattern] [file_list]。編譯的訊息,使用前提是你要有Makefile,編譯時只要打:make其訊息將自動放至quickfix裡。我的快速鍵為Ctrl+F3。
函式列表
這是使用taglist這個plugin。我的快速鍵為F5。
源碼追蹤
在vim裡必需有ctags檔案的技援,在使用前必需先安裝,在ubuntu內安裝很容易,在terminal輸入sudo apt-get install exuberant-ctags就安裝完了,產生該檔的指令有點複雜,在vim裡輸入":!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ." 即可。我的快速鍵為Ctrl+F12。
有了該檔案,在vim只要游標移到你想要查詢的函式或變數輸入Ctrl+]或Ctrl+t即可跳過去再跳回來,若是有同時找到多個類似keyword,你可以輸入:ts選擇你要跳那一個,或是當你已經跳過去了,想直接跳到下一個keyword可以輸入:tnext。
另一種可能使用的情形是有些人想要直接開另一個window來看該keyword,這種情形可以使用srcexplore這個plugin。我的快速鍵為F6。
檔案列表
使用ls這個plugin,我的快速鍵為F2。
源碼補齊
使用omnicppcomplete這個plugin,我平常不習慣用它,請大家自己參考plugin的網頁:
http://www.vim.org/scripts/script.php?script_id=1520
結論
其實vim還有很多很強大的功能,只是跟其他IDE比起來沒有一開就預設裝好,但藉著一些plugin,可以讓它擁有各式各樣的能力,此外,你還可以自行的修改它,讓它符合平常使用的習慣。這篇文章,主要介紹了一些plugin,主要是讓已熟悉使用vim的讀者們能更瞭解到vim的強大,並且將它運用在工作中,希望這篇文章能讓讀者們能更快快樂樂的用vim。
參考資料
在開始之前我先讓大家看一下我的vim視窗截圖
這張圖內有幾個重點要觀察:
- 多檔編輯列表顯示在最上面的小視窗裡。
- 源碼有folding的功能,左邊中間的視窗。
- 字串搜尋的結果及編譯的訊息顯示在左下的視窗,這個視窗稱為quickfix window。
- 源碼的函式列表顯示在右邊視窗。
- 源碼追蹤,這能讓你跳到你現在游標所在變數或函式的宣告或是定義的地方。
- 方便的瀏覽硬碟內的檔案並開啟。
- 源碼補齊,對於寫大專案很需要這種功能。
多檔編輯
這個功能是使用tabBar的vim plugin,將該plugin下載並放在~/.vimrc/plugin/後,在多檔編輯時該視窗會自動跑出來。切換視窗的方法大略為Ctrl+Tab Ctrl+Shift+Tab 及 Alt+[number]。
補充:在vim要開其他檔,可輸入:e 檔名來開啟其他檔。
Folding
Folding又可以叫程式碼摺疊,這個功能是預設就有的,詳細指令可參考gvim裡的工具列Tools->Folding,我平常不習慣使用這個功能,若要開啟我會設:set foldmethod=indent
字串搜尋及編譯訊息列表
這兩項功能的訊息列表是放在quickfix window,開啟方式為:copen關閉為:cclose。我的快速鍵為F4。另外要跳到下一個及前一個訊息的指令為:cnext :cprev。我的快速鍵為Ctrl+n及Ctrl+p。
字串搜尋的指令為:vimgrep [pattern] [file_list]。編譯的訊息,使用前提是你要有Makefile,編譯時只要打:make其訊息將自動放至quickfix裡。我的快速鍵為Ctrl+F3。
函式列表
這是使用taglist這個plugin。我的快速鍵為F5。
源碼追蹤
在vim裡必需有ctags檔案的技援,在使用前必需先安裝,在ubuntu內安裝很容易,在terminal輸入sudo apt-get install exuberant-ctags就安裝完了,產生該檔的指令有點複雜,在vim裡輸入":!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ." 即可。我的快速鍵為Ctrl+F12。
有了該檔案,在vim只要游標移到你想要查詢的函式或變數輸入Ctrl+]或Ctrl+t即可跳過去再跳回來,若是有同時找到多個類似keyword,你可以輸入:ts選擇你要跳那一個,或是當你已經跳過去了,想直接跳到下一個keyword可以輸入:tnext。
另一種可能使用的情形是有些人想要直接開另一個window來看該keyword,這種情形可以使用srcexplore這個plugin。我的快速鍵為F6。
檔案列表
使用ls這個plugin,我的快速鍵為F2。
源碼補齊
使用omnicppcomplete這個plugin,我平常不習慣用它,請大家自己參考plugin的網頁:
http://www.vim.org/scripts/script.php?script_id=1520
結論
其實vim還有很多很強大的功能,只是跟其他IDE比起來沒有一開就預設裝好,但藉著一些plugin,可以讓它擁有各式各樣的能力,此外,你還可以自行的修改它,讓它符合平常使用的習慣。這篇文章,主要介紹了一些plugin,主要是讓已熟悉使用vim的讀者們能更瞭解到vim的強大,並且將它運用在工作中,希望這篇文章能讓讀者們能更快快樂樂的用vim。
參考資料