vim入門 新增cscope功能

2021-06-03 02:58:34 字數 2853 閱讀 5942

2、執行cscope

執行cscope命令,出現兩個面板,上方是乙個查詢結果的顯示面板,下方是乙個查詢條件指定面板。使用tab鍵在兩個面板間切換,也可使用上下左右方向件和翻頁鍵在同一面板內貼換位置。選中顯示面板的某個項,回車即可進入該檔案,這是呼叫vim開啟檔案,這時就可以結合ctags使用了。當然也可以直接使用vim開啟檔案,結合ctags閱讀原始碼。使用前,必須現使用「cscope-indexer -r」命令遞迴生成索引資訊檔案。特殊情況下,還需要使用者使用find命令,主動生成索引資訊檔案,並指定給cscope工具。 cscope提供了如下九種查詢方式:

find this c symbol:

#查詢指定的c符號

find this global definition:

#查詢指定的全域性定義

find functions called by this function:

#查詢指定函式呼叫的函式

find functions calling this function:

#查詢呼叫指定函式的函式

find this text string:

#查詢字串

change this text string:

#修改指定字串

find this egrep pattern:

#查詢匹配字元

find this file:

#查詢指定檔案

find files #including this file:

#指定引用標頭檔案進行查詢

使用「ctrl +d"退出cscope!

3、應用例項:

$ wget

$ tar xvfj linux-2.6.27.6.tar.bz2

#解壓檔案

$ cd linux-2.6.27.6

#進入源**根目錄

$ ctags -r

#遞迴生成標籤檔案

$ cscope-indexer -r

#遞迴生成索引資訊檔案

$ cscope

#使用cscope閱讀原始碼

標籤檔案、索引資訊檔案只需要第一次或者**發生變動時生成,以後使用直接執行cscope即可。

首先需要為你的**生成乙個cscope資料庫。生成資料庫很簡單,在你的專案根目錄執行下面的命令:

cscope -rbq

如果不是c**,使用:

$ find ./ -name "*.c" -or -name "*.h" -or -name "*.cpp" -or -name "*.s" | cscope -rbq

這個命令會生成三個檔案:cscope.out, cscope.in.out, cscope.po.out。其中cscope.out是基本的符號索引,後兩個檔案是使用"-q"選項生成的,可以加快cscope的索引速度。

具體的引數的含義可以通過:man cscope 得到。-r: 在生成索引檔案時,搜尋子目錄樹中的**

-b: 只生成索引檔案,不進入cscope的介面

-q: 生成cscope.in.out和cscope.po.out檔案,加快cscope的索引速度

-k: 在生成索引檔案時,不搜尋/usr/include目錄

-i: 如果儲存檔案列表的檔名不是cscope.files時,需要加此選項告訴cscope到哪兒去找原始檔列表。可以使用「-」,表示由標準輸入獲得檔案 列表。

-i dir: 在-i選項指出的目錄中查詢標頭檔案

-u: 掃瞄所有檔案,重新生成交叉索引檔案

三在vim中使用cscope

1 、用vim編輯的時候:

vim filename.c

2 把生成的cscope檔案匯入到vim中來

:cs add /路徑/cscope.out **所在目錄

我習慣現切換到**所在目錄再操作,所以直接使用:

:cs add cscope.out 就可以了。

3 檢視是否已經連線到對應資料庫

:cs s

4 cs f s ***x 查詢***x出現的地方,它能詳細列出哪些檔案的哪行的哪個函式引用,以及該行的內容.

,首先呼叫「cscope add」命令新增乙個cscope資料庫,然後就可以呼叫「cscope find」命令進行查詢了。vim支援8種cscope的查詢功能,如下:例如,我們想在**中查詢呼叫work()函式的函式,我們可以輸入:「:cs find c work」,回車後發現沒有找到匹配的功能,可能並沒有函式呼叫work()。我們再輸入「:cs find s work」,查詢這個符號出現的位置,現在vim列出了這個符號出現的所有位置。我們還可以進行字串查詢,它會雙引號或單引號括起來的內容中查詢。還可 以輸入乙個正規表示式,這類似於egrep程式的功能。

s: 查詢c語言符號,即查詢函式名、巨集、列舉值等出現的地方

g: 查詢函式、巨集、列舉等定義的位置。

cs f g main 游標跳到main函式的位置

d: 查詢本函式呼叫的函式

cs f d main 列出main函式呼叫的函式,輸入函式所對應的數字,就可以調到相應掉用的函式

c: 查詢呼叫本函式的函式

cs f c main 會輸出找到沒有匹配的結果,因為沒有函式呼叫main函式

t: 查詢指定的字串

cs f t string

f: 查詢並開啟檔案

還有在.vimrc下面加上了鍵盤對映

map :tlist

這樣就可以使用快捷鍵f8直接進入tlist模式了。這裡注意和 : 之間有空格的。

在.vimrc 下加入一下兩行

set tags=tags;

set autochdir

這樣使用tags時可以首先在當前目錄下查詢tags文 件,如果沒有則轉到父目錄查詢。依次向上。

4、安裝cscope.vim執行指令碼

emacs新增cscope外掛程式

首先安裝cscope,我用的raspbian,命令為 apt get install cscope 改檔案位於,原始碼根目錄的 contrib xcscope 目錄下。修改 emacs新增如下內容 add to list load path expand file name emacs.d plug...

VIM快捷更新cscope和ctags

主要就是記錄一下linux下vim關於cscope更新資料庫的配置。平時使用cscope ctags的時候檢視 還是比較方便的,但是編輯檔案的時候就比較雞肋了,原因在於cscope和ctags沒有整合自動更新,其實這些在配置檔案中新增簡單的幾句話就能實現了,筆者經過測試,認為在大專案中cscope增...

vim中cscope工具安裝與使用

cscope是類似於ctags一樣的工具,但可以認為她是ctags的增強版,因為她比ctags能夠做更多的事。在vim中,通過cscope的查詢,跳轉到指定的地方就像跳轉到任何標籤 她能夠儲存標籤棧,所以通過合適的鍵盤對映繫結,你能夠在函式向後或向前跳轉,就像通常使用的tags一樣。cs f s 查...