我的vim + ctags + cscope

來源:互聯網
上載者:User
首先,基礎的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來編程還是用來閱讀源碼都基本夠用了。再次感謝吳垠~

我的設定檔的和安裝的指令碼放在相容核心的論壇上,因為這裡不能上傳檔案,請感興趣的朋友到論壇下載,不過可能需要註冊論壇帳號。
文章的地址:
http://www.unifiedkernel.com/forum/viewtopic.php?f=5&t=48&p=102#p102

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.