將Vim改造為強大的IDE—Vim整合Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有圖有真相)
轉自:http://blog.csdn.net/bokee/article/details/6633193
工欲善其事,必先利其器。一個強大的開發環境可以大大提高工作效率。好吧,我知道這是廢話。。。不過,我想一定有很多跟我一樣打算進入Linux平臺開發的新手,一開始都為找不到一個像Windows下的VS那樣可以一鍵安裝並且功能幾乎完美無缺的開發工具而鬱悶不已,甚至打算收回剛剛邁出的腳步。所幸的是,通過幾天努力,我總算配置出了一個功能完備的基於Vim的開發環境。這個開發環境除了基本的Vim外,還包括Ctags,Taglist,Cscope,SuperTab,OmniCppComplete,Winmanager,NERDTree和MiniBufExplorer等元件。
在開始操作前,先普及下基礎概念,然後約定一下表達規範。
1)Vim存在多個配置檔案vimrc,比如/etc/vimrc,此檔案影響整個系統的Vim。還有~/.vimrc,此檔案隻影響本使用者的Vim。而且~/.vimrc檔案中的配置會覆蓋/etc/vimrc中的配置。這裡我們只修改~/.vimrc檔案。
2)Vim的外掛(plugin)安裝在Vim的runtimepath目錄下,你可以在Vim命令列下執行"set rtp“命令檢視。這裡我們選擇安裝在~/.vim目錄,沒有就建立一個。
3)當本文說”在Vim命令列下執行cmdxx命令“時,意思是指在Vim的命令列模式下執行cmdxx命令,即在Vim的正常模式下通過輸入冒號":"進入命令列模式,然後緊接著輸入命令cmdxx。在後文描述中都會省略冒號":"輸入。
4)如果沒有說明“在Vim命令列下執行某命令”,則是在shell中執行該命令。
5)如果命令中間被空白符間隔或有與正文容易混淆的字元,我會用雙引號將命令與正文區分。所以讀者在實際操作時,不要輸入命令最前面和最後面引號。
6)本文關於組合快捷鍵的描述,形如a-b形式的快捷鍵表示同時按下a鍵和b鍵,而形如"a-b c"形式的快捷鍵,則表示先同時按下a鍵和b鍵,然後放開ab鍵,再按下c鍵。
1,安裝使用Ctags
Ctags工具是用來遍歷原始碼檔案生成tags檔案,這些tags檔案能被編輯器或其它工具用來快速查詢定位原始碼中的符號(tag/symbol),如變數名,函式名等。比如,tags檔案就是Taglist和OmniCppComplete工作的基礎。
這裡介紹從原始碼包安裝,安裝步驟跟大多數軟體的從原始碼安裝步驟一樣。
1)從http://ctags.sourceforge.net/下載原始碼包後,解壓縮生成原始碼目錄,
2)然後進入原始碼根目錄執行./configure,
3)然後執行make,
4)編譯成功後執行make install。
5)在~/.vimrc中增加以下這行:
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
到此,Ctags已安裝成功。
使用Ctags的也很簡單。 進入我們的專案程式碼根目錄,執行以下命令:
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
另外,由於在前面第5條,我們已經在Vim中配置了Ctrl-F12組合快捷鍵,所以我們也可以進入程式碼根目錄後,開啟Vim,按下Ctrl-F12快捷鍵自動生成tags檔案。
命令執行完後,會在原始碼目錄生成tags檔案。Vim預設會自動讀取當前目錄下的tags檔案,所以不需要修改~/.vimrc檔案。此時,我們已經具有定義跳轉的功能了。有兩組快捷鍵是最常用的。
Ctrl-] 跳轉到游標所在符號的定義。
Ctrl-t 回到上次跳轉前的位置。
更多功能通過命令man ctags或在Vim命令列下執行help ctags查詢。
2,安裝使用Taglist
Taglist是vim的一個外掛,提供原始碼符號的結構化檢視。
1)從http://www.vim.org/scripts/script.php?script_id=273下載安裝包,也可以從http://vim-taglist.sourceforge.net/index.html下載。
2)進入~/.vim目錄,將Taglist安裝包解壓,解壓後會在~/.vim目錄中生成幾個新子目錄,如plugin和doc(安裝其它外掛時,可能還會新建autoload等其它目錄)。
3)進入~/.vim/doc目錄,在Vim下執行"helptags ."命令。此步驟是將doc下的幫助文件加入到Vim的幫助主題中,這樣我們就可以通過在Vim中執行“help taglist.txt”檢視taglist幫助。
4)開啟配置檔案~/.vimrc,加入以下兩行:
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
到此安裝已經完成。
在Vim命令列下執行TlistToggle命令就可以開啟Taglist視窗,再次執行TlistToggle則關閉。示圖如下:
我們可以通過Ctrl-w快捷鍵或滑鼠點選在Taglist視窗和編輯區之間切換焦點,在Taglist視窗用滑鼠或鍵盤選擇某個符號,然後點選或回車,就可以跳轉到該符號定義的位置。
更多功能可通過在Vim命令列下執行help taglist.txt查詢。
3,安裝使用Cscope
Cscope提供互動式查詢語言符號功能,如查詢哪些地方使用某個變數或呼叫某個函式。
Cscope已經是Vim的標準特性,預設都有支援,官方網址為http://cscope.sourceforge.net/。
1)在Vim下執行version檢視Vim支援哪些特性,前面有字首符號+的為支援。如果支援Cscope,則直接進入2),否則下載Cscope原始碼包編譯安裝。步驟同Ctags安裝。
2)確定Vim已支援Cscope後,將檔案http://cscope.sourceforge.net/cscope_maps.vim下載到~/.vim/plugin目錄。
到這裡,我們就可以開始使用Cscope了。
1)使用Cscope需要生成cscope資料庫檔案。進入專案程式碼根目錄執行命令:
cscope -Rbq -f path/xxx.out
命令執行後會生成xxx.out檔案,即cscope資料庫檔案。更多用法參考man cscope文件。
2)進入專案程式碼根目錄,在Vim下執行命令:
cs add path/xxx.out
此命令將cscope資料庫載入Vim。
3)Cscope常用快捷鍵
Ctrl-\ s 查詢所有當前游標所在符號出現過位置。
Ctrl-\ c 查詢所有呼叫當前游標所在函式的函式。
按下快捷鍵查詢結束後會在編輯區下方出現查詢結果的列表,輸入結果編號並回車,就能跳轉到該查詢結果在原始碼中的相應位置。例如,我們將游標移到initial_pool_size變數定義的位置,即17行,然後按下"Ctrl-\ s"組合快捷鍵,得到示圖如下:
然後我們輸入2,並回車,就能跳轉到第2個查詢結果。
為了介面更好看,可以把Cscope的查詢結果輸出到quickfix視窗,需要在~/.vimrc中加入下面這行:
set cscopequickfix=s-,c-,d-,i-,t-,e-
這樣,通過快捷鍵查詢某個符號後,會立即跳轉到第一個找到的該符號出現的位置。如果你對這次預設跳轉的位置不滿意,在Vim命令列下執行cw命令,就能在編輯區下面quickfix視窗看到所有查詢結果的列表,點選相應列表項就能跳轉到相應位置。這個功能已經跟VS很接近了吧:)
更多功能可通過命令man cscope或在Vim命令列下執行help cscope查詢。
4,安裝使用OmniCppComplete
OmniCppComplete主要提供輸入時實時提供類或結構體的屬性或方法的提示和補全。跟Talist一樣,OmniCppComplete也是一個Vim外掛,同樣依賴與Ctags工具生成的tags檔案。安裝步驟跟Taglist類似。
從http://www.vim.org/scripts/script.php?script_id=1520下載安裝包後。
1)進入~/.vim目錄,將安裝版解壓縮
2)進入~/.vim/doc目錄,在Vim命令列下執行"helptags .”
3)在~/.vimrc中加入以下幾行:
set nocp
filetype plugin on
OmniCppComplete的使用幾乎跟VS下的VA一樣。如下圖所示,輸入m0.之後立即彈出my_class類中所有的函式列表,然後用上下鍵選擇合適的函式。
更多功能通過在Vim命令列下執行"help omnicppcomplete"查詢。
5,安裝使用SuperTab
SuperTab使Tab快捷鍵具有更快捷的上下文提示功能。跟OmniCppComplete一樣,SuperTab也是一個Vim外掛。
從http://www.vim.org/scripts/script.php?script_id=1643下載安裝版。這個安裝包跟先前的幾個Vim外掛不同,它是一個vba檔案,即Vimball格式的安裝包,這種格式安裝包提供傻瓜式的安裝外掛的方法。
1)用Vim開啟.vba安裝包檔案。
2)在Vim命令列下執行命令“UseVimball ~/.vim”。此命令將安裝包解壓縮到~/.vim目錄。VImball安裝方式的便利之處在於你可以在任何目錄開啟.vba包安裝,而不用切換到安裝目的地目錄。而且不用執行helptags命令安裝幫助文件。
3)在~/.vimrc檔案中加入以下這行:
let g:SuperTabDefaultCompletionType="context"
SuperTab使用很簡單,只要在輸入變數名或路徑名等符號中途按Tab鍵,就能得到以前輸入過的符號列表,並通過Tab鍵迴圈選擇。
6,安裝使用Winmanager,NERDTree和MiniBufExplorer
前面介紹的幾個工具和外掛,主要提供快捷的編輯功能,如定義跳轉,符號查詢,符號提示與補全等。這裡的三個外掛,主要優化佈置VIm的介面。具體來說,NERDTree提供樹形瀏覽檔案系統的介面,MiniBufExplorer提供多檔案同時編輯功能,而Winmanager將這NERDTree介面和Taglist介面整合起來,使Vim更像VS!
分別從http://www.vim.org/scripts/script.php?script_id=1658
http://www.vim.org/scripts/script.php?script_id=159
http://www.vim.org/scripts/script.php?script_id=95
下載NERDTree,MiniBufExplorer和Winmanager安裝包(Winmanager還有個更新的vba版本http://www.vim.org/scripts/script.php?script_id=1440,這裡選用舊版本的Winmanger)。
1)像其它外掛一樣,將NERDTree安裝包解壓到~/.vim目錄。並進入doc目錄,在Vim命令列下執行"helptags ."命令。
2)MiniBufExplorer只有一個.vim檔案,將其拷貝到~/.vim/plugin目錄。
3)在~/.vimrc檔案中加入以下幾行:
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1
let g:miniBufExplMoreThanOne=0
4)將Winmanager安裝包解壓到~/.vim目錄。
5)在~/.vimrc檔案中加入以下幾行:
let g:NERDTree_title="[NERDTree]"
let g:winManagerWindowLayout="NERDTree|TagList"
function! NERDTree_Start()
exec 'NERDTree'
endfunction
function! NERDTree_IsValid()
return 1
endfunction
nmap wm :WMToggle<CR>
6)這個版本的Winmanager好像有個小bug,你在開啟Winmanager介面時,會同時開啟一個空的檔案。這會影響後續使用,所以我們要在開啟Winmanager時關掉這個空檔案。在~/.vim/plugin目錄下的winmanager.vim檔案中找到以下函式定義並在第5行下新增第6行的內容:
function! <SID>ToggleWindowsManager()
if IsWinManagerVisible()
call s:CloseWindowsManager()
else
call s:StartWindowsManager()
exe 'q'
end
endfunction
到這裡,就大功告成了!
現在進入我們的專案目錄,開啟Vim,按下組合快捷鍵w-m就可以我們的嶄新的Vim了!再次按下w-m就可關閉介面。示圖如下:
介面最上面的一條窄邊就是MiniBufExplorer,可以看到我開啟了兩個檔案cache.c和assoc.c,是不是很像VS的標籤?
緊靠MiniBufExplorer下方左邊的矩形區域就是NERDTree。在這個視窗,我們可以用滑鼠或鍵盤方便的瀏覽整個檔案系統,在某個檔案上點選或回車,就可以在右邊編輯區域開啟該檔案。
NERDTree下方的就是前面安裝的Taglist介面。
7,其它有用的~/.vimrc設定
設定配色方案,我用的是eveing方案,配色方案儲存在/usr/share/vim/vimXY/colors
colo evening
顯示行數 set nu
與自動縮排相關的選項 set autoindent
set tabstop=4
set shiftwidth=4
set mouse=a
相關文章
- vim進階之新增ctags和cscope
- vim外掛之Taglist
- vim ctags 配置 自動命令
- vim外掛 NERDTree安裝使用
- vim 中Ctags的安裝和使用
- 將 Vim 配置成 Python IDEPythonIDE
- vim實戰:外掛安裝(Vundle,NerdTree)
- 將 Vim 打造成 python IDEPythonIDE
- 將 VIM 打造成 go 語言的 ideGoIDE
- vim之AutoComplPop和OmniCppComplete的安裝和使用
- 如何將 Vim 打造成一個成熟的 IDEIDE
- Mac Vim + ctags 實現多目錄跳轉Mac
- VIM安裝NERDTree外掛顯示工程目錄
- 【Linux】配置一個強大的Vim!!Linux
- Vim常見模式有幾種?模式
- 如何優雅地使用 VIM 檔案管理外掛 NERDTree
- 如何把 VIM 整成 IDEIDE
- [IDE工具篇]Vim命令合集IDE
- 像 IDE 一樣使用 VimIDE
- 誰說Vim不是IDE?(一)IDE
- 日常生活小技巧 -- vim 中 ctags 的安裝和使用
- RecyclerView快取原理,有圖有真相View快取
- VIM安裝TagList外掛顯示檔案函式列表函式
- 保姆級教程!將 Vim 打造一個 IDE (Python 篇)IDEPython
- 在Linux中,有哪些基本的 Vim 命令?Linux
- 15個不起眼但非常強大的 Vim 命令
- 解決docker容器中沒有vim命令Docker
- Taglist: Exuberant ctags (http://ctags.sf.net) not found in PATH. Plugin is not loaded.HTTPPlugin
- Vim命令圖譜
- 【利器】Vim配置成IDE方案以及使用IDE
- 我為什麼會選擇Vim來開發Go專案及Vim IDE安裝配置和操作GoIDE
- Vi/Vim命令桌布圖
- 在Vim裡精通Vim
- 修改ctags讓fzf.vim外掛顯示C,C++方法宣告的標籤C++
- 開會:簡直就是犧牲工作!(有圖有真相 :D)
- Vim
- 《模仿遊戲》沒有告訴你的圖靈真相遊戲圖靈
- vim 的 viewView