Cscope 插件的使用:
1 下載:http://cscope.sourceforge.net/
2 安裝:# ./configure
# make
# make install // 須要root權限
注意:安裝過程出錯的話是由於確實一些想依賴的文件,請yum命令直接安裝便可。
3 幫助::help if_cscop.txt
4 使用:
先在~/vimrc中增長一句:
:set cscopequickfix=s-,c-,d-,i-,t-,e-數據庫
跟Ctags同樣, 要使用其功能必須先爲你的代碼生成一個cscope的數據庫, 在項目的根目錄運行下面的命令:
$ cd ~/src/vim71/
$ cscope -Rbq
# 此後會生成三個文件
$ ll cscope.*
-rw-rw-r-- 1 wooin wooin 1.1M 2007-09-30 10:56 cscope.in.out
-rw-rw-r-- 1 wooin wooin 6.7M 2007-09-30 10:56 cscope.out
-rw-rw-r-- 1 wooin wooin 5.1M 2007-09-30 10:56 cscope.po.out
# 打開文件, 開始Coding
$ cd src
$ vi main.c
進入vim後第一件事是要把剛纔生成的cscope文件導入到vim中來, 用下面的命令:
:cs add ~/src/vim71/cscope.out ~/src/vim71
上面這條命令很重要, 必須寫全, 不能只寫前半句:
:cs add ~/src/vim71/cscope.out
由於源碼是多級目錄的, 若是這樣寫, cscope是沒法在子目錄中的源碼中工做的,
固然, 若是你的源碼都在同一級目錄中就無所謂了.
若是你要常常用cscope的話, 能夠把上面那句加到~/.vimrc中去.
下面咱們來操練一下, 查找函數vim_strsave()的定義, 用命令:
:cs find g vim_strsav
按下回車後會自動跳轉到vim_strsave()的定義處. 此時你確定會說Ctags也能夠作到這個呀,
那麼下面說的這個Ctags就沒法作到了, 我想查找vim_strsave()到底在那些地方被調用過了, 用命令:
:cs find c vim_strsave
按下回車後vim會自動跳轉到第一個符合要求的地方, 而且在命令欄顯示有多少符合要求的結果, 如圖:vim按下回車後會自動跳轉到vim_strsave()的定義處. 此時你確定會說Ctags也能夠作到這個呀,
那麼下面說的這個Ctags就沒法作到了, 我想查找vim_strsave()到底在那些地方被調用過了, 用命令:
:cs find c vim_strsave
按下回車後vim會自動跳轉到第一個符合要求的地方, 而且在命令欄顯示有多少符合要求的結果ide若是自動跳轉的位置你不滿意, 想看其餘的結果, 能夠用下面的命令打開QuickFix窗口:函數
:cw
uicscope的主要功能是經過同的子命令"find"來實現的
"cscope find"的用法:
cs find c|d|e|f|g|i|s|t name
0 或 s 查找本 C 符號(能夠跳過註釋)
1 或 g 查找本定義
2 或 d 查找本函數調用的函數
3 或 c 查找調用本函數的函數
4 或 t 查找本字符串
6 或 e 查找本 egrep 模式
7 或 f 查找本文件
8 或 i 查找包含本文件的文件.net若是每次查找都要輸入一長串命令的話還真是件討人厭的事情, Cscope的幫助手冊中推薦了一些快捷鍵的用法, 下面是其中一組, 也是我用的, 將下面的內容添加到~/.vimrc中, 並重啓vim:
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>
當光標停在某個你要查找的詞上時, 按下<C-_>g, 就是查找該對象的定義, 其餘的同理.
按這種組合鍵有一點技巧,按了<C-_>後要立刻按下一個鍵,不然屏幕一閃就回到nomal狀態了
<C-_>g的按法是先按"Ctrl+Shift+-", 而後很快再按"g"插件很奇怪, 其中的這句:
nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
在個人vim中沒法工做, 可是我改爲:
nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<CR><CR>對象