在vim中,使用Cscope來快速定位函數的定義,尋找函數的原型,很方便。
在我Fedora8的機器中,已經預設安裝了cscope這個程式。
剛剛使用cscope,不是很熟悉,很多“先進的”功能留待以後慢慢挖掘。 這裡先寫一下vim中簡單的使用cscope,以便能夠在原始碼中:
1. 快速切換至函數的定義。
2. 函數的聲明.
3. 尋找某個函數被使用的情況。
首先,讓vim支援cscope,在~/.vimrc中加入:
"set cscopequickfix=s-,c-,d-,i-,t-,e-"
其次,要在原始碼目錄內產生相關的cscope的資訊.
這裡以libpcap代碼為例
#cd /usr/code/libpcap
#cscope -Rbq
#把產生的cscope檔案匯入到vim中來
#:cs add /usr/code/libpcap/cscope.out /usr/code/libpcap/
下面就可以在vim中進行實際演練操作了.
1.把游標移到某個函數上,使用Ctrl+],就可以跳到函數的定義中.
2.尋找某個函數的聲明和定義:
:cs find g strcpy
3.如果出現找出多個函式宣告和定義的情況,可以使用quickFix視窗進行選擇切換:
:cw
另外,更多功能可以尋找相關的協助,以下轉載了一些cs find的技巧. 可以用得著.
-----以下為轉載的. 作者(吳垠)
--------http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx
cscope的主要功能是通過同的子命令"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 |
尋找包含本檔案的檔案 |
如果每次尋找都要輸入一長串命令的話還真是件討人厭的事情, 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"