vim進階之新增ctags和cscope

alexanderkenndy發表於2014-04-18

你想要一個非常強大的ide嗎?除了eclipse,visual studio,android studio等我們就沒有選擇了嗎?這樣想就大錯特錯了,在linux下使用增強功能後的vim,emacs一樣能達到eclipse,visual studio,source insight的功能,今天給大家分享下ctags 和cscope的配置和使用


環境:64bit Ubuntu Desktop 12.04 LTS

快捷通道:https://github.com/alexanderkenndy/advancevim


先來看看效果嚐嚐鮮


下面就開始配置之旅吧



1.配置ctags

ctags的方便之處就在於多檔案編輯,檔案定位跳轉,通過命令生成一個tags檔案記錄原始檔的索引,幫您快速定位程式碼,它支援的語言非常多,如c,c++,java等。

1.1下載ctags-5.8.tar.gz

via:https://github.com/alexanderkenndy/advancevim/blob/master/ctags-5.8.tar.gz

another :http://ctags.sourceforge.net

1.2解壓安裝

$ tar -xf ctags-5.8.tar.gz
$ ./configure
$ make
$ sudo make install

1.3生成索引檔案

進入到原始檔所在目錄,輸入如下命令

$ ctags -R 

此命令會在當前目錄生成一個名為tags的檔案,使用vim開啟檔案,設定生效命令 

:set tags=./tags

如果經常在此目錄編輯,可以將此命令配置到vimrc中,如下是我的配置:

if has("tags")
    set tags=tags
endif
set autochdir

1.4使用方式

將游標定位在c/c++中的一個函式或成員變數中,按住Ctrl+] 則跳轉到方法的宣告處,再次按下Ctrl+t,則又跳回來。



2.配置cscope
cscope說自己就是一個超頻的ctags,使用過非常強大,不但分析出哪個函式定義的何處,還能分析出在哪裡被呼叫


2.1下載cscop-15.8a.tar.gz

via :https://github.com/alexanderkenndy/advancevim/blob/master/cscop-15.8a.tar.gz

another:http://cscope.sourceforge.net

2.2解壓安裝

$ tar -xf cscop-15.8a.tar.gz
$ ./configure
$ make
$ sudo make install

Tip:

1.如果在make過程中出現 curses.h not found 異常導致make失敗,則需要安裝libncurses5-dev包,最好連libncursesw5-dev一併安裝

2.如果在make過程中出現 fscanner.c 錯誤,並且伴隨著Flex的問題,則需要安裝bison和flex,安裝方式一樣:sudo apt-get install bison flex.

然後在 make clean,然後繼續make。

2.3生成索引檔案

我關注的是.cc,.h,.cpp檔案,所以程式碼如下

find . -name "*.cc" -o -name "*.h" -o -name "*.cpp" > cscope.files
cscope -bkq -i cscope.files

命令執行完畢之後,會生成三個檔案,但是有一個檔案時我們比較關心的,就是 cscope.out,開啟vim,使用命令 

:cs add /home/alexanderkenndy/node-v0.10.21/src/cscope.out 
當然好是要先配置vimrc,如果是通過apt-get install  安裝vim的話,預設vimrc是存放在 /etc/vim/下

nmap <C-x>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-x>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-x>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-x>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-x>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-x>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-x>i :cs find i ^<C-R>=eptend("<cfile>")<CR>$<CR>
nmap <C-x>d :cs find d <C-R>=expand("<cword>")<CR><CR>

2.4使用方式

使用vim開啟檔案之後,找到一個你想要檢視的方法,輸入快捷鍵:Ctrl-x,然後按下s,則跳轉到當前方法的宣告處,相當於輸入:cs find s 加上方法名


3.配置 TagList 外掛

taglist的功能十分強大,可以很方便的瀏覽原始碼,類似於eclipse的outline,列出程式碼當中定義的區域性變數,方法名等,可以通過taglist快速定位到程式碼指定的位置。

據官網說支援的語言非常多,有java,c++,python,perl,erlang等主流程式設計語言都支援吧。


3.1 外掛環境

想要在vim中新增幫助文件,外掛,以及語法高亮定義檔案,則需要在~/.vim/下建立三個資料夾,分別名為 plugin,doc,syntax,所有的外掛都放在plugin下,我的目錄結構如下:

3.2下載外掛

via :https://github.com/alexanderkenndy/advancevim/tree/master/plugin

another :http://www.vim.org/scripts/script.php?script_id=273

3.3 配置外掛 

下載放到plugin 目錄後,還需要在vimrc中配置如下程式碼段

let Tlist_Ctags_Cmd='/usr/local/bin/ctags' 
let Tlist_Show_One_File=1
let Tlist_OnlyWindow=1
let Tlist_Use_Right_Window=0
let Tlist_Sort_Type='name'
let Tlist_Exit_OnlyWindow=1
let Tlist_Show_Menu=1
let Tlist_Max_Submenu_Items=10
let Tlist_Max_Tag_length=20
let Tlist_Use_SingleClick=0
let Tlist_Auto_Open=0
let Tlist_Close_On_Select=0
let Tlist_File_Fold_Auto_Close=1
let Tlist_GainFocus_On_ToggleOpen=0
let Tlist_Process_File_Always=1
let Tlist_WinHeight=10
let Tlist_WinWidth=18
let Tlist_Use_Horiz_Window=0
nmap tl :TlistToggle<cr>

如此則taglist外掛就配置好了。

3.4 使用方式

使用vim開啟一個原始檔,如test.cpp 

撥出方式1

:Tlist

撥出方式2

如vimrc中配置的,鍵 tl 已經被我繫結到了TlistToggle這個命令上,非編輯模式下輸入 tl 試試,則程式碼的變數宣告,函式名等就列在vim左邊啦


4.配置多terminal環境

有的時候希望一邊編輯檔案,一邊操作terminal,但是沒有辦法,vim模式下只能用:! + command 操作,視窗之間切來切去是不是很煩躁,emacs可以通過 alt+x shell 來建立命令列視窗,現在有了terminator ,vim使用者不用發愁了,就可以幫助我們了,下面看下我的效果圖嚐嚐鮮



4.1 安裝

安裝方式就比較簡單了

$ sudo apt-get install terminator

4.2 常用快捷鍵

Ctrl-Shift-E :豎分屏

Ctrl-Shift-O :橫分屏

Ctrl-Tab或Ctrl-Shift-N :在多個屏之間切換

Ctrl-Shift-Left :將可拖拽的bar向左移動(豎分屏)

Ctrl-Shift-Right :將bar向右移動(豎分屏)

Ctrl-Shift-UP : 將bar向上移動(橫分屏)

Ctrl-Shift-Down :將bar向下移動(橫分屏)

Ctrl-Shift-S :隱藏滾動條

Alt-UP :游標向上移動

Alt-Down :游標向下移動

Alt-Left :游標向左移動

Alt-Right:游標向右移動

Ctrl-Shift-C :複製選中文字

Ctrl-Shift-V  :貼上選中的文字

Ctrl-Shift-X  :只顯示當前terminal視窗,隱藏其他terminal視窗

Ctrl-Shift-W :關閉當前視窗

Ctrl-Shift-Q  :關閉terminal



附:我的vimrc配置
via :https://github.com/alexanderkenndy/advancevim/blob/master/vimrc


---------------------------------------------------------
持續更新中....


author :alexanderkenndy
create date:2014/6/15

相關文章