玩转vim之vim插件-cscope
2015-03-20 15:55
225 查看
玩转vim之vim插件-cscope
Cscope
介绍
cscope 是一个 C 语言的浏览工具,通过这个工具可以很方便地找到某个函数或变量的定义位置、被调用的位置等信息。目前支持 C 和 C++。cscope 自身带一个基于文本的用户界面,不过 gvim 提供了cscope接口,因此可以在 gvim 中调用 cscope,方便快捷地浏览源代码。 Cscope是一个类似ctags的工具。 你可以把它想作是超过频的ctags,因为它功能比ctags强大很多。 在 Vim里,通过cscope查询结果来跳转就象跳转到其他的标签完全一样;它被保存在标签栈里。这样你就可以象使用tags一样在函数等等之间便捷的跳转。在VIM中使用cscope非常简单,首先调用“cscopeadd”命令添加一个cscope数据库,然后就可以调用“cscopefind”命令进行查找了。VIM支持8种cscope的查询功能,如下:例如,我们想在代码中查找调用work()函数的函数,我们可以输入:“:csfind c work”,回车后发现没有找到匹配的功能,可能并没有函数调用work()。我们再输入“:csfind swork”,查找这个符号出现的位置,现在vim列出了这个符号出现的所有位置。我们还可以进行字符串查找,它会双引号或单引号括起来的内容中查找。还可以输入一个正则表达式,这类似于egrep程序的功能。使用
跟Ctags一样, 要使用其功能必须先为你的代码生成一个cscope的数据库, 在项目的根目录运行下面的命令: cscope –Rbkq R 表示把所有子目录里的文件也建立索引 b 表示cscope不启动自带的用户界面,而仅仅建立符号数据库 q 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度 k 在生成索引文件时,不搜索/usr/include目录 如果单纯使用cscope –R,会直接进入curses的GUI界面,问你需要查找什么东东。在这种模式下,可用的快捷键为: l ctrl+d 退出 l tab 在结果与搜索菜单之间移动 l ctrl+p 前一项(对搜索结果和菜单项都适用) l ctrl+n 后一项(对搜索结果和菜单项都适用) l enter:显示搜索结果并打开vi编辑器 # 此后会生成三个文件 cscope.in.outcscope.out
cscope.po.out 进入vim后第一件事是要把刚才生成的cscope文件导入到vim中来, 用下面的命令: :cs add /path/cscope.out /path/vim71 上面这条命令很重要, 必须写全, 不能只写前半句: :cs add /path/cscope.out 因为源码是多级目录的, 如果这样写, cscope是无法在子目录中的源码中工作的, 当然, 如果你的源码都在同一级目录中就无所谓了. 如果你要经常用cscope的话, 可以把上面那句加到~/.vimrc中去.
使用cs find 查找
(也可以简化写成 cs f)后面添加需要得字符串类型: c:Find functions calling this function//查找调用本函数的函数 d:Find functions called by this function //查找本函数调用的函数 e:Find this egrep pattern//查找egrep模式,相当于egrep功能,但查找速度快多了 f:Find this file //查找并打开文件,类似vim的find功能 g:Find this definition//查找函数、宏、枚举等定义的位置,类似ctags的功能 i:Find files #including this file //查找包含本文件的文件 s:Find this C symbol //查找C语言符号,即查找函数名、宏、枚举值等出现的地方 t:Find assignments to //查找指定的字符串 例如:使用cscope查找do_fork函数的定义,在vim命令行下执行 :cs f g do_fork Cscope 默认只支持C, lex, 和 yacc 文件 (.c, .h, .l, .y) ,如果还要它索引其它类型的怎么办? 那就需要 cscope.files 帮忙cscope 在大型项目上的应用
对于大型代码库,cscope是个特别有用的工具,它可以帮助你做快速且有针对性的搜索从而比你手动用grep搜索要节省很多时间,比如linux kernel 。相关文章推荐
- 玩转vim之vim插件-cscope
- vim插件之cscope
- Linux编辑环境vim插件:cscope
- 一起talk Vim吧(第十八回:Vim插件之cscope续)
- windows下使用vim cscope插件
- vim ctags cscope lookupfile插件(包括如何自动生成索引tag、自动查找索引tag)
- cscope插件,项目根目录、任意子目录下打开vim自动加载cscope.out
- vim 插件 -- cscope
- 玩转vim之vim插件Ctags
- vim 插件安装(tags,taglist,cscope)
- vim插件cscope安装
- 玩转vim之vim插件-cvim
- vim cscope 插件使用
- vim常用快捷键+cscope插件
- 玩转vim至vim插件-taglist
- vim插件cscope安装
- coreutils学习——vim插件(cscope、ctags、taglist)
- 玩转vim之vim插件-cvim
- vim 实现跳转的插件TagList+Ctags+Cscope
- (vim+ctags+taglist +cscope):(ubuntu 10.10下安装Ctags与TAGLISTS插件)