Cscope 的使用

來源:互聯網
上載者:User
在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"

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.