在Vim中使用gtags


之前一直使用vim+ctags+cscope來弄c的代碼,最近看同事使用gtags,覺得在搜索方面要高級很多,網上大多都是emacs+gtags的資料,而vim的則比較少,這里搞通了之后,做個記錄。

 

1.下載、安裝 global

wget http://tamacom.com/global/global-6.6.2.tar.gz

tar xzvf global-6.6.2.tar.gz

cd global-6.6.2

./configure

make && make install

 

2.將生成的文件拷貝到.vim對應的目錄

cp gtags-cscope.vim  gtags.vim ~/.vim/plugin/

(我沒有使用vbundle安裝插件,因此直接拷貝到了plugin目錄)

 

3.在代碼的根目錄中執行

cd ~/postgresql-10.1

gtags

會生成幾個文件:GPATH  GRTAGS  GTAGS

 

4.在.vimrc中添加gtags配置

set cscopetag " 使用 cscope 作為 tags 命令
set cscopeprg='gtags-cscope' " 使用 gtags-cscope 代替 cscope


"gtags.vim 設置項
let GtagsCscope_Auto_Load = 1
let CtagsCscope_Auto_Map = 1
let GtagsCscope_Quiet = 1

 (即使添加這些,我的cscope和ctags還是照樣可以使用)

 

5.打開代碼,可以使用了,但是效果和emacs還是有點不一樣:

1)在根目錄中,可以查找某個函數,然后打開文件

root@seg01 postgresql-10.1]# global -x pg_parse_query
pg_parse_query    596 src/backend/tcop/postgres.c pg_parse_query(const char *query_string)

 2)打開文件

[root@seg01 postgresql-10.1]# vim src/backend/tcop/postgres.c

 3)使用Gtags查找:Gtags pg_parse_query(這里會自動補全,使用tab鍵)

結果顯示在quickfix中,多條結果可以用鼠標來點擊,或者cn下一條,cp上一條來選擇

 

6.其他幾個使用說明

01.Gtags func:查看定義處
02.Gtags -r func:查看引用處
03.Gtags -s text:查看未被數據庫定義的tags
04.copen:打開quick fix顯示窗口
05.cclose:關閉quick fix顯示窗口
06.cn:下一項
07.cp:上一項
08.cl:列出查詢到的相關項
09.ccN:到列表中第N個符號處
10.Gtags -g pattern:搜索pattern指定的字符串
11.Gtags -gie -pattern:-e選項可以用於搜索’-‘字符,但是基礎搜索,沒有元字符,-i選項忽略大小寫,類似於grep的選項
12.GtagsCuorsor:取決於光標位置,要是在定義處,查詢其引用,要是在引用處,跳轉至其定義處,否則就是Gtags -s命令
13.Gtags -P text:查詢包含text的路徑名,Gtags -P后接/dir/為列出叫做dir目錄下文件,后接\.h$列出所有的include文件
14.Gtags -f file:列出file里的符號,Gtags -f %則列出當前文件的符號

 

7.在之前ctags+cscope中,查找定義和查找使用都很方便,但是有時候是找不到目標的···

有一種情況最不好找了,一個函數記得一部分名稱,沒法搜索到,但是用gtags后就好搜索了,會自動補全。

 

8.cscope中常用的幾個命令:

cs find s : 查找符號,會顯示列表出來

cs find g :查找定義

cs find c: 查找調用本函數的函數

cs find c: 查找本函數調用的函數

cs find t:查找本字符串

 

9.使用vimgrep也有局限性,只能查找具體的文件,不能自動查找所有的子目錄。

 

配好之后感覺還是很爽的,這樣查找起來方便很多。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM