Trace code最重要的就是跳進函式跟列出函式或變數所使用的地方
雖然lxr就可以搞定 但每到一個新環境設定感覺還蠻麻煩的
所以我整理出最快可以完成以上功能的工具與方法
ctags參考:
$ sudo apt-get install exuberant-ctags
$ cd project/
$ ctags -R *
主要就是安裝exuberant-ctags 然後將project下所有資料夾的變數都建立索引
gtags
參考:
$ sudo apt-get install global
$ cd project/
( $ find . -name "*.[ch]" > gtags.files )
$ gtags
更改檔案 ~/.vimrc 加上以下兩行 讓gtags可以取代cscope 跟vim整合
set cscopeprg=gtags-cscope
cs add GTAGS
如果code有再更新 只要執行以下指令便可更新索引
$ global -u
cscope+vim參考:
更改檔案 ~/.vimrc 加上以下幾行
nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR> nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-\>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR>
這邊是為了在vim裡使用快速鍵ctrl+\ 然後輸入s或g等指令呼叫cscope
如此便可以不用每次打:cs find s等指令
有了以上的三個元件設定 就能讓vim使用索引跳轉函式跟變數的功能了
例如看到一個函式或變數 就可以用ctrl+] 跳進函式的內容 ctrl+t跳回來
或是輸入ctrl+\後 按s, g, c....等指令 得到結果後一樣可以用ctrl+t跳回來
----------------
但是這個方法有個問題 就是他會用你開啟的檔案目錄為主要搜尋目錄
意思是假設你的project資料夾底下有sub_folder1跟sub_folder2
project
\---- sub_folder1
\--------aaa.c
\---- sub_folder2
\--------bbb.c
如果你把ctags和gtags的資料建在project目錄底下
則如果執行
$ cd project
$ vim sub_folder1/aaa.c
就沒問題
但是如果你執行
$ cd project
$ cd sub_folder1
$ vim aaa.c
就會有問題 會找不到ctags跟gtags的檔案
因此這裡有人提出一個patch
http://forum.ubuntu.org.cn/viewtopic.php?f=68&t=342099
但如果不改vim就還是乖乖的從project根目錄開檔案吧....
例如看到一個函式或變數 就可以用ctrl+] 跳進函式的內容 ctrl+t跳回來
或是輸入ctrl+\後 按s, g, c....等指令 得到結果後一樣可以用ctrl+t跳回來
----------------
但是這個方法有個問題 就是他會用你開啟的檔案目錄為主要搜尋目錄
意思是假設你的project資料夾底下有sub_folder1跟sub_folder2
project
\---- sub_folder1
\--------aaa.c
\---- sub_folder2
\--------bbb.c
如果你把ctags和gtags的資料建在project目錄底下
則如果執行
$ cd project
$ vim sub_folder1/aaa.c
就沒問題
但是如果你執行
$ cd project
$ cd sub_folder1
$ vim aaa.c
就會有問題 會找不到ctags跟gtags的檔案
因此這裡有人提出一個patch
http://forum.ubuntu.org.cn/viewtopic.php?f=68&t=342099
但如果不改vim就還是乖乖的從project根目錄開檔案吧....
太神啦
回覆刪除太神啦
刪除怎這末麻煩拉
回覆刪除