1. 程式人生 > >vim+cscope簡易教程

vim+cscope簡易教程

符號 skill license .html 同時 程序 bsp 函數調用 沒有

Cscope具有純正的Unix血統,它最早是由貝爾實驗室為PDP-11計算機開發的,後來成為商用的AT&T Unix發行版的組成部分。直到2000年4月,這個工具才由SCO公司以BSD license開源發行。

Cscope的主頁在http://cscope.sourceforge.net/,如果你的計算機上沒有cscope,你可以在此處下載它,在寫本文時,它的最新版本是15.8b。mac中可以用homebrew一鍵安裝。

1、cscope的用法很簡單,首先需要為你的代碼生成一個cscope數據庫。在你的項目根目錄運行:

cscope -Rbq

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

3、在缺省情況下,cscope在生成數據庫後就會進入它自己的查詢界面,我們一般不用這個界面,所以使用了"-b"選項。如果你已經進入了這個界面,按CTRL-D退出。

4、Cscope在生成數據庫中,在你的項目目錄中未找到的頭文件,會自動到/usr/include目錄中查找。如果你想阻止它這樣做,使用"-k"選項。

5、-R表示索引子目錄。R是遞歸的首字符簡寫。

在vim中使用cscope:

1、要在vim中使用cscope的功能,需要在編譯vim時選擇"+cscope"。vim的cscope接口先會調用cscope的命令行接口,然後分析其輸出結果找到匹配處顯示給用戶。

2、在vim中使用cscope非常簡單,首先調用"cscope add"命令添加一個cscope數據庫,然後就可以調用"cscope find"命令進行查找了。

3、vim支持8種cscope的查詢功能,如下:

  • s: 查找C語言符號,即查找函數名、宏、枚舉值等出現的地方
  • g: 查找函數、宏、枚舉等定義的位置,類似ctags所提供的功能
  • d: 查找本函數調用的函數
  • c: 查找調用本函數的函數
  • t: 查找指定的字符串
  • e: 查找egrep模式,相當於egrep功能,但查找速度快多了
  • f: 查找並打開文件,類似vim的find功能
  • i: 查找包含本文件的文件

4、 例如,我們想在vim 7.0的源代碼中查找調用do_cscope()函數的函數,我們可以輸入:":cs find c do_cscope",回車後發現沒有找到匹配的功能,可能並沒有函數調用do_cscope()。我們再輸入":cs find s do_cscope",查找這個C符號出現的位置,現在vim列出了這個符號出現的所有位置。

5、我們還可以進行字符串查找,它會雙引號或單引號括起來的內容中查找。還可以輸入一個正則表達式,這類似於egrep程序的功能,但它是在交叉索引數據庫中查找,速度要快得多。

6、vim提供了一些選項可以調整它的cscope功能:

  • cscopeprg選項用於設置cscope程序的位置。
  • cscopequickfix設定是否使用quickfix窗口來顯示cscope的結果,詳情請":help cscopequickfix";
  • 如果你想vim同時搜索tag文件以及cscope數據庫,設置cscopetag選項;
  • cscopetagorder選項決定是先查找tag文件還是先查找cscope數據庫。設置為0則先查找cscope數據庫,設置為1先查找tag文件。我通常設置為1,因為在tag文件中查找到的結果,會把最佳匹配列在第一位。

7、vim的手冊中給出了使用cscope的建議方法,使用命令":help cscope-suggestions"查看。

8、Using Cscope on large projects (example: the Linux kernel):http://cscope.sourceforge.net/large_projects.html

9、the vim+cscope tutorial:http://cscope.sourceforge.net/cscope_vim_tutorial.html

vim+cscope簡易教程