天天看點

我的vim + ctags + cscope

首先,基礎的vim的使用請直接google。

第二,vim的安裝和配置請參考這篇經典教程:

http://blog.csdn.net/wooin/archive/2008/08/28/2844868.aspx

再次感謝吳垠。

這裡是我的vim的配置和一些使用小技巧,貼上來做筆記:)

每次都從頭象吳垠說的那樣配置有些麻煩,我把我的vimrc和插件都儲存起來,

放在home.vim檔案夾下,壓縮存放:),要是系統重裝,解壓運作下面的

install腳本的指令即可。

hongmy525 的 vim 的安裝(參考install腳本):

注意:這裡假設你和我一樣不是root使用者.

1、在$HOME目錄下建立.vim這個檔案夾;

2、把準備好的插件還有配置檔案( home.vim/* )拷貝都$HOME/.vim/目錄下

3、做個連接配接讓$HOME/.vimrc指向 $HOME/vimrc

4、讓root使用者做兩個連接配接,/root/.vim指向$HOME/.vim,

    /root/.vimrc指向$HOME/.vim/vimrc

vim的版本是7.2源碼編譯安裝,下面是vim支援的教進階功能。

源碼編譯Vim來使用時需要加 -enable-cscope選項.

一般我安裝 ctags、cscope 這倆個插件是:

$ sudo apt-get install ctags cscope

我習慣這樣建立索引檔案:

$ ctags -R --fields=+lS && cscope -Rbq

把這個指令寫成shell腳本放到/usr/bin下。

1、用vim + ctags

a  首先我們必需給要閱讀的原始碼建一個或多個tags檔案,

在shell下利用ctags指令給單個檔案建立tags如下:

 $ ctags  filename.c

要給同一個目錄下的所有檔案建立tags如下:

 $ ctags -R

這時在tags檔案所在的目錄下打開源檔案閱讀,vim就會自動調用tags檔案。

如果tags檔案不在目前目錄下,能在指令模式下用下面的指令設定tag檔案

:set tag=tag_file_path

但是一般對我來說tags都在目前目錄下,是以我習慣于在~/.vimrc中加入:

:set tags=$PWD/tags

b  要在vim下跳到一個函數的定義處能在指令模式下用下面的指令:

     :tag fuction_name

這個指令将把你帶到fuction_name函數的定義處。

這個功能十分有用,以前一直沒有注意。

c  另外,ctrl + ]指令會把目前光标下的單詞作為tag的名字,并直接跳轉。

用ctrl + t指令能回到前一個tag,你能在ctrl + t前面加一個數字表示往回跳

的層數。

d  使用Ctrl + g能顯示目前正在編輯的檔案名,及所在的行号。

如果源檔案的排版比較亂的話,能通過指令gg=G來格式化整個源檔案。

2、cscope

在使用cscope之前需要先生成一個資料庫

a  生成索引檔案:

 cscope 用于生成索引檔案的選項:

-R: 在生成索引檔案時,搜尋子目錄樹中的代碼

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

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

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

-i: 如果儲存檔案清單的檔案名不是cscope.files時,需要加此選項告訴cscope到

    哪兒去找源檔案清單。能使用“-”,表示由标準輸入獲得檔案清單。

-I dir: 在-I選項指出的目錄中查找頭檔案

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

-C: 在搜尋時忽略大小寫

-P path: 在以相對路徑表示的檔案前加上的path,這樣,你不用轉換到你資料庫

    檔案所在的目錄也能使用他了。

如果你的源碼中隻含有.c,.h檔案,你能直接使用

$ cscope -Rbq

在使用cscope之前需要先生成一個資料庫,你可以使用cscope-indexer(如果多個

目錄你可以使用-R選項),它會在目前目前下生成一個cscope.files的檔案,這個文

件包含了cscope需要生成索引的全部檔案,因為cscope-indexer不會自動查到.cpp,.S

字尾的檔案,是以最後使用find來生成cscope.files檔案:

$ find ./ -name “*.c” -or -name “*.h” -or -name “*.cpp” > cscope.files

上面的指令會把目前目錄下所有.c,.h,.cpp檔案列出并寫入cscope.files檔案中。

接着使用cscope -Rbq來生成索引引。

$ cscope -Rbq

一般使用方法:

$ find ./ -name "*.c" -or -name "*.h" -or -name "*.cpp" -or -name "*.S" | cscope -Rbq

b  接着你就能使用vim來打開一個檔案來浏覽編輯代碼了。

想檢視cscope的使用方法最好的辦法是在vim中輸入:

:cs help

這裡還是稍稍說明一下:

s: 查找C語言符号,即查找函數名、宏、枚舉值等出現的地方

g: 查找函數、宏、枚舉等定義的位置,類似ctags所提供的功能

d: 查找本函數調用的函數

c: 查找調用本函數的函數

t: 查找指定的字元串

e: 查找egrep模式,相當于egrep功能,但查找速度快多了

f: 查找并打開檔案,類似vim的find功能

i: 查找包含本檔案的文

例如平常最常用的查詢那個函數調用了函數func():

:cs f c func

:cs find c func

上兩幅效果圖:

這個是自動補全:

我的vim + ctags + cscope

下面這個是函數參數提示:

我的vim + ctags + cscope

有朋友讨論大小寫忽略:

這裡截圖大小寫忽略:

我的vim + ctags + cscope

配置到這,無論是用vim來程式設計還是用來閱讀源碼都基本夠用了。再次感謝吳垠~

我的配置檔案的和安裝的腳本放在相容核心的論壇上,因為這裡不能上傳檔案,請感興趣的朋友到論壇下載下傳,不過可能需要注冊論壇賬号。

文章的位址:

http://www.unifiedkernel.com/forum/viewtopic.php?f=5&t=48&p=102#p102