歡迎您光臨本站 註冊首頁

說說在fedora上使用ctags和cscope看代碼

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0

我裝的fedora6上的vim版本是7.0,帶有ctags-5.6和 cscope-15.5的支持。我選擇了工作機使用linux fedora6,系統自帶的word和看pdf文件的軟體都有,收發郵件的軟體也有,挺方便的,好用,就是看代碼的軟體需要自己配一下,麻煩一點,不過配好了以後從速度和使用習慣上比sourceinsight好使。參考了網上一些人的經驗,實踐了一下,寫這個文檔總結也許對想了解了解ctags和cscope的人有幫助。

有很多程序員在linux上習慣使用vi編輯器,也有一些人喜歡使用emacs,不過我個人還是傾向於vi,其實用慣了vi就不喜歡用windows上的編輯器了,其實原因很簡單:使用鍵盤完成查找和替換比用滑鼠準確和快,而vi都使用鍵盤操作實現功能。目前vim是類似於vi的編輯器,它是開源項目而且功能更多,而ctags和 cscope就是它的插件,下面針對vim 來談談配置使用ctags 和cscope看代碼。

1。需要下載安裝

taglist是vim的插件,用來在屏幕左邊開窗口顯示代碼的全局變數、函數名稱

下載地址:http://www.vim.org/scripts/script.php?script_id=273

我下載的是taglist-43.zip

安裝的方法是將這個包在/usr/share/vim/vim70下展開


2。對應需要看的代碼生成cscope的資料庫,這個過程也叫訓練

我需要看的代碼有三部分一部分是linux內核,另外兩個部分是庫和應用層代碼。

Linux內核代碼針對我需要的部分整理出資料庫,而不相關的部分不參加整理

先建路徑:

mkdir $HOME/readcode

mkdir $HOME/readcode/cscope-kernel

mkdir $HOME/readcode/cscope-app

進入路徑:

cd readcode

建立生成cscope 資料庫的文件文件名是create-kernel.sh

LNX=$HOME/build/linux-2.4.22

find $LNX \

-path "$LNX/arch/*" ! -path "$LNX/arch/arm*" -prune -o \

-path "$LNX/include/asm-*" ! -path "$LNX/include/asm-arm*" -prune -o \

-path "$LNX/tmp*" -prune -o \

-path "$LNX/Documentation*" -prune -o \

-path "$LNX/scripts*" -prune -o \

-name "*.[chxsS]" -print >$HOME/readcode/cscope-kernel/cscope.files

cd $HOME/readcode/cscope-kernel

cscope -b -q -k

cd $HOME/readcode

執行 source create-kernel.sh

會在目錄$HOME/readcode/cscope-kernel下生成cscope.out文件

對應用層代碼生成cscope的資料庫要簡單地多

它的生成腳本:

APP=$HOME/build/App

find $APP -name "*.cpp" -print >$HOME/readcode/cscope-app/cscope.files

find $APP -name "*.[ch]" -print >>$HOME/readcode/cscope-app/cscope.files

cd $HOME/readcode/cscope-app

cscope -b -q -k

cd $HOME/readcode

應用程序代碼有一些是c++的,所以將.cpp格式的代碼列出來生成cscope資料庫


3。配置.vimrc文件

.vimrc內容如下:

set cst

set csto=1

set cscopequickfix=s-,c-,d-,i-,t-,e-,f-

cs add /home/yangxl/readcode/cscope-kernel/cscope.out

cs add /home/yangxl/readcode/cscope-app/cscope.out

let Tlist_Enable_Fold_Column = 0

let Tlist_WinWidth = 30

let Tlist_Show_One_File = 1

set tabstop=4

nmap :cs find d =expand("")

nmap :cs find c =expand("")

nmap :cs find t =expand("")

nmap :cs find e =expand("")

nmap :cs find f =expand("")

nmap :cs find i =expand("")

nnoremap :TlistToggle

最下面這幾行定義了F2-F9功能的快捷鍵

F9是打開關閉左邊taglist窗口的快捷鍵

具體它的語法解釋在vi中通過鍵入

:help cscope

學習和理解


4。使用方法

用vi打開參加訓練的代碼,將游標停留在調用的方法上按ctrl-], 是不是出現了這個方法的原型代碼,按F9鍵多出左邊窗口,顯示方法名列表和宏定義和全局變數,再按一次F9左邊窗口消失。

顯示載入的資料庫

:cs show

能看到載入了兩個cscope.out文件

:cs find 2 方法名 或 :cs find d 方法名 對應快捷鍵F2

完成找到被這個方法調用的方法名

:cs find 3 方法名 或 :cs find c 方法名 對應快捷鍵F3

完成找到調用這個方法的方法名

:cs find 4 字元串名稱 或 :cs find t 字元串名稱 對應快捷鍵F4

找到出現的字元串

:cs find 7 文件名 或 :cs find f 文件名 對應快捷鍵F7

找到文件

:cs find 8 文件名 或 :cs find i 文件名 對應快捷鍵F8

找到include這個文件的文件

:TlistToggle 對應快捷鍵F9


5。沒有做到的

考慮代碼在不斷的編寫過程中,怎樣做才能同步cscope的庫呢?

[火星人 ] 說說在fedora上使用ctags和cscope看代碼已經有904次圍觀

http://coctec.com/docs/linux/show-post-188828.html