cscope

Cscope 是一款開源免費的 C/C++瀏覽工具,自帶一個基於文本的用戶界面,通過cscope可以很方便地找到某個函式或變數的定義位置、被調用的位置等信息。Cscope對 C /C++支持較好,也可以自己定製來支持Java和PerlPython等腳本語言。Vimgvim都提供了cscope接口,通過適當的配置,可以在Unix/Linux下實現變數、函式、檔案等之間跳轉,就像Windows下的Source Insight一樣靈活易用。由於cscope是開源免費的,而且配合vim可以脫離滑鼠,實現全鍵盤操作,方便快捷地瀏覽原始碼,深受程式設計師、Geek等人士的喜愛。

基本介紹

Cscope簡介,Cscope 使用,2.1、Cscope安裝,2.2、Cscope配置,2.3、Cscope 使用,

Cscope簡介

cscope 是一個 C語言的瀏覽工具,通過這個工具可以很方便地找到某個函式或變數的定義位置、被調用的位置等信息。目前支持 C 和 C++。cscope 自身帶一個基於文本的用戶界面,不過 gvim 提供了cscope接口,因此可以在 gvim 中調用 cscope,方便快捷地瀏覽原始碼
Cscope是一個類似ctags的工具。 你可以把它想作是超過頻的ctags,因為它功能比ctags強大很多。 在 Vim里,通過cscope查詢結果來跳轉就象跳轉到其他的標籤完全一樣;它被保存在標籤棧里。這樣你就可以象使用tags一樣在函式等等之間便捷的跳轉。在VIM中使用cscope非常簡單,首先調用“cscope add”命令添加一個cscope資料庫,然後就可以調用“cscope find”命令進行查找了。VIM支持8種cscope的查詢功能,如下:例如,我們想在代碼中查找調用work()函式的函式,我們可以輸入:“:cs find c work”,回車後發現沒有找到匹配的功能,可能並沒有函式調用work()。我們再輸入“:cs find s work”,查找這個符號出現的位置,現在vim列出了這個符號出現的所有位置。我們還可以進行字元串查找,它會雙引號單引號括起來的內容中查找。還可以輸入一個正則表達式,這類似於egrep程式的功能。

Cscope 使用

2.1、Cscope安裝

2.1.1 軟體下載
下載地址
2.1.2 軟體安裝:
./configure --with-flex (註:如果平台是Linux,最好帶上 --with-flex選項)
make (註:我沒有遇到錯誤)
make install (註: 直接安裝好了)
PS.在Ubuntu中打開終端使用命令行安裝再簡單不過: sudo apt-get install vim

2.2、Cscope配置

vim 配置檔案 vimrc. 你可以修改/etc/vimrc使所有用戶都使用本配置檔案,當然你還可以修改~/.vimrc 使僅對當前用戶有效。下載配置檔案:cscope_map.vim, 把cscope_map.vim里從 if has("cscope") 到 endif裡邊的內容複製到/etc/vimrc裡邊去,裡邊的命令意思請看下邊文章

2.3、Cscope 使用

2.3.1、建立cscope使用的索引檔案
2.3.1.1 在你需要瀏覽源碼的根目錄下(如你想用cscope看linux源碼)使用下面命令:
#: cscope -Rbkq<回車>
2.3.1.2 R 表示把所有子目錄里的檔案也建立索引
2.3.1.3 b 表示cscope不啟動自帶的用戶界面,而僅僅建立符號資料庫
2.3.1.4 q 生成cscope.in.out和cscope.po.out檔案,加快cscope的索引速度
2.3.1.5 k 在生成索引檔案時,不搜尋/usr/include目錄
2.3.2、使用cs find 查找(也可以簡化寫成 cs f)後面添加需要得字元串類型:
c:Find functions calling this function//查找調用本函式的函式
d:Find functions called by this function //查找本函式調用的函式
e:Find this egrep pattern//查找egrep模式,相當於egrep功能,但查找速度快多了
f:Find this file //查找並打開檔案,類似vim的find功能
g:Find this definition//查找函式、宏、枚舉等定義的位置,類似ctags的功能
i:Find files #including this file //查找包含本檔案的檔案
s:Find this C symbol //查找C語言符號,即查找函式名、宏、枚舉值等出現的地方
t:Find assignments to //查找指定的字元串
例如:使用cscope查找do_fork函式的定義,在vim命令行下執行 :cs f g do_fork
2.3.2.3 上面所有命令也可以配合按鍵及來實現
2.3.2.3.1 Ctrl+\ 再按 s 表示 :cs find s命令
2.3.2.3.2同理實現cs find + g,d,c,t,e,f,i命令
2.3.2.4 Cscope_map.vim說明:
2.3.2.4.1、有英文注釋的我就不說明了,我就說一下裡邊的鍵 map 映射
2.3.2.4.2、如: nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>
2.3.2.4.2.1 nmap 表示在vim的普通模式下,即相對於:編輯模組和可視模式,以下是幾種模式
:map 普通,可視模式及操作符等待模式
:vmap 可視模式
:omap 操作符等待模式
:map! 插入和命令行模式
:imap 插入模式
:cmap 命令行模式
2.3.2.4.2.2 <C-\>表示:Ctrl+\ s表示輸入(即按:s) s
2.3.2.4.2.3 : 表示輸入':'
2.3.2.4.2.4 “cs find s"表示輸入"cs find s"也即是要輸入的命令
2.3.2.4.2.5 <C-R>=expand("cword")總體是為了得到:游標下的變數或函式。cword 表示:cursor word, 類似的還有:cfile表示游標所在處的檔案名稱吧
2.3.2.4.2.6 就是回車吧,不太清楚

相關詞條

熱門詞條

聯絡我們