vim cscope代码跳转插件

我用的是https://github.com/chxuan/vimplus这个项目的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 sa :call cscope#findInteractive(expand(''))
nnoremap sl :call ToggleLocationList()
" s: Find this C symbol
nnoremap  ss :call cscope#find('s', expand(''))
" g: Find this definition
nnoremap  sg :call cscope#find('g', expand(''))
" d: Find functions called by this function
nnoremap  sd :call cscope#find('d', expand(''))
" c: Find functions calling this function
nnoremap  sc :call cscope#find('c', expand(''))
" t: Find this text string
nnoremap  st :call cscope#find('t', expand(''))
" e: Find this egrep pattern
nnoremap  se :call cscope#find('e', expand(''))
" f: Find this file
nnoremap  sf :call cscope#find('f', expand(''))
" i: Find files #including this file
nnoremap  si :call cscope#find('i', expand(''))

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. 实例

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 默认在当前路径查找cscope.files

这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。
其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快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,这样,你不用切换到你数据库文件所在的目录也可以使用它了。


4.3 添加cscope.out 到vim

在源码目录打开vim
:cs add cscope.out
如果vimrc文件已经添加 3 中提到的配置,则会自动执行cs add cscope.out

4.3 查看cscope 帮助

image.png
:cs find s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
:cs find g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
:cs find d: 查找本函数调用的函数
:cs find c: 查找调用本函数的函数
:cs find t: 查找指定的字符串
:cs find e: 查找egrep模式,相当于egrep功能,但查找速度快多了
:cs find f: 查找并打开文件,类似vim的find功能
:cs find i: 查找包含本文件的文

你可能感兴趣的:(vim cscope代码跳转插件)