我用的是https://github.com/chxuan/vimplus這個(gè)項(xiàng)目的vim配置趴酣。感謝作者袭祟。
1. 安裝cscope
可以編譯源碼安裝,也可以直接用包管理器安裝。centos下安裝:
yum install cscope
2. 安裝cscope.vim
Plug 'vim-scripts/cscope.vim'
3. vimrc配置cscope快捷鍵
~/.vimrc 中添加如下配置:
" scscope
set cscopequickfix=s-,c-,d-,i-,t-,e-
nnoremap <leader>sa :call cscope#findInteractive(expand('<cword>'))<CR>
nnoremap <leader>sl :call ToggleLocationList()<CR>
" s: Find this C symbol
nnoremap <leader>ss :call cscope#find('s', expand('<cword>'))<CR>
" g: Find this definition
nnoremap <leader>sg :call cscope#find('g', expand('<cword>'))<CR>
" d: Find functions called by this function
nnoremap <leader>sd :call cscope#find('d', expand('<cword>'))<CR>
" c: Find functions calling this function
nnoremap <leader>sc :call cscope#find('c', expand('<cword>'))<CR>
" t: Find this text string
nnoremap <leader>st :call cscope#find('t', expand('<cword>'))<CR>
" e: Find this egrep pattern
nnoremap <leader>se :call cscope#find('e', expand('<cword>'))<CR>
" f: Find this file
nnoremap <leader>sf :call cscope#find('f', expand('<cword>'))<CR>
" i: Find files #including this file
nnoremap <leader>si :call cscope#find('i', expand('<cword>'))<CR>
if has("cscope")
set csprg=/usr/bin/cscope
set csto=1
set cst
set nocsverb
if filereadable("cscope.out")
cs add cscope.out
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
set csverb
endif
4. 實(shí)例
4.1 生成cscope.files 文件路徑使用絕對路徑
find `pwd` -name "*.h" -o -name "*.hpp" -o -name "*.cpp" -o -name "*.cc" -o -name "*.c" > cscope.files
4.2 生成cscope.out
cscope -Rbq -i cscope.files
或者
cscope -Rbq // cscope 默認(rèn)在當(dāng)前路徑查找cscope.files
這個(gè)命令會(huì)生成三個(gè)文件:cscope.out, cscope.in.out, cscope.po.out缴啡。
其中cscope.out是基本的符號(hào)索引砸讳,后兩個(gè)文件是使用"-q"選項(xiàng)生成的,可以加快cscope的索引速度诵叁。
上面所用到的命令參數(shù)雁竞,含義如下:
-R: 在生成索引文件時(shí),搜索子目錄樹中的代碼
-b: 只生成索引文件拧额,不進(jìn)入cscope的界面
-q: 生成cscope.in.out和cscope.po.out文件碑诉,加快cscope的索引速度
-k: 在生成索引文件時(shí),不搜索/usr/include目錄
-i: 如果保存文件列表的文件名不是cscope.files時(shí)侥锦,需要加此選項(xiàng)告訴cscope到哪兒去找源文件列表进栽。可以使用“-”捎拯,表示由標(biāo)準(zhǔn)輸入獲得文件列表泪幌。
-I dir: 在-I選項(xiàng)指出的目錄中查找頭文件
-u: 掃描所有文件,重新生成交叉索引文件
-C: 在搜索時(shí)忽略大小寫
-P path: 在以相對路徑表示的文件前加上的path署照,這樣祸泪,你不用切換到你數(shù)據(jù)庫文件所在的目錄也可以使用它了。
4.3 添加cscope.out 到vim
在源碼目錄打開vim
:cs add cscope.out
如果vimrc文件已經(jīng)添加 3 中提到的配置建芙,則會(huì)自動(dòng)執(zhí)行cs add cscope.out
4.3 查看cscope 幫助
:cs find s: 查找C語言符號(hào)没隘,即查找函數(shù)名、宏禁荸、枚舉值等出現(xiàn)的地方
:cs find g: 查找函數(shù)右蒲、宏、枚舉等定義的位置赶熟,類似ctags所提供的功能
:cs find d: 查找本函數(shù)調(diào)用的函數(shù)
:cs find c: 查找調(diào)用本函數(shù)的函數(shù)
:cs find t: 查找指定的字符串
:cs find e: 查找egrep模式瑰妄,相當(dāng)于egrep功能,但查找速度快多了
:cs find f: 查找并打開文件映砖,類似vim的find功能
:cs find i: 查找包含本文件的文