vim下用ctags+cscope查詢切換
i. about ctags
1安裝ctags
sudo apt-get install ctags
2生成tags檔案
在原始碼根目錄下執行ctags -R命令來為程式原始碼生成標籤檔案,其-R選項表示遞迴操作,同時為子目錄也生成標籤檔案,vim利用生成的標籤檔案,可以進行檢索,並在不同的檔案、元素之間來回切換。
3指定tags檔案位置
可以手動指定tags檔案,在vim命令列中輸入或者修改.vimrc檔案 set tags=./tags
這個命令讓vim在當前目錄裡尋找tags檔案
tags檔案只能檢視函式,類或變數的定義,而沒有被呼叫資訊,如果要知道一個函式在什麼地方被使用,需要使用cscope
ii. aboutcscope
1安裝cscope
sudo apt-get install cscope
2知識點
1) 生成索引檔案cscope -Rbq則生成cscope.in.outcscope.out cscope.po.out三個檔案
在命令列執行:cs add path/cscope.out 新增索引檔案的位置,或者加到.vimrc檔案中
2) cscope的用法 :cs find {querytype} {name}
{querytype} 為下面的命令字
0
1 或 g: 查詢定義
2 或 d: 查詢本函式呼叫的函式
3 或 c: 查詢呼叫指定函式的函式
4 或 t: 查詢字串
6 或 e: 查詢 egrep 模式
7 或 f: 查詢檔案
8 或 i: 查詢包含指定檔案的檔案
這些都是命令列的命令,敲起來太慢,可以在.vimrc中定義這些命令的鍵盤快捷鍵,例如快捷鍵<c-\>s (敲入ctrl+\的組合鍵然後再敲s)組合,即實現查詢C語言符號的命令,就定義在下面的第一行,也可以根據自己的習慣,定製自己的快捷鍵。
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>