之前已经详细的介绍了在 vim中使用ctags ,这篇文章我们就来详细介绍一下如何在vim中使用cscope。 首先,我们还是了解一下什么是cscope。简单来讲,cscope主要用来协助浏览C/C++语言,他的功能要强大于ctags,不仅支持变量/函数的定义查询,还记录了函数的调用处查询等功能,所以也有说法称cscope的诞生就是为了取代ctags。无论这个说法是否有据可依,对使用方来说,当然是希望功能越强大方便越好啦,所以这也是我们为什么讲ctags和cscope都装上的原因啦。 第二,我们来说一下vim的支持。cscope没有ctags那么幸运,cscope在大部分的linux下的vim中是没有提供支持的(但是在windows下的gvim都提供了支持),所以,如果你打算要在linux下面使用vim+cscope,那么1,你要下载安装cscope。2,你要重新编译vim,加上支持选项: --enable-cscope 当然,cscope也提供了windows版(否则windows下gvim怎么和cscope搭配嘛...),分别下载地址如下:

cscope(linux):http://cscope.sourceforge.net/ cscope(windows):http://sourceforge.net/projects/mslk/files/

当然,安装的最后一步就是,不要忘记讲cscope放进的环境变量里! 第三,好了,假设你已经搭建好了vim+cscope的环境,那么现在就是我们学习怎么用的时候了

function Do_CsTag()

if(executable("cscope") && has("cscope") )

if(has('win32'))

silent! execute "!dir /b *.c,*.cpp,*.h,*.java,*.cs >> cscope.files"

else

silent! execute "!find . -name "*.h" -o -name "*.c" -o -name "*.cpp" -o -name "*.m" -o -name "*.mm" -o -name "*.java" -o -name "*.py" > cscope.files"

endif

silent! execute "!cscope -b"

if filereadable("cscope.out")

execute "cs add cscope.out"

endif

endif

endf

调用这个函数就可以用cscope生成数据库,并添加到vim中,具体每个命令意义如下:

if(has('win32'))

silent! execute "!dir /b *.c,*.cpp,*.h,*.java,*.cs >> cscope.files"

else

silent! execute "!find . -name "*.h" -o -name "*.c" -o -name "*.cpp" -o -name "*.m" -o -name "*.mm" -o -name "*.java" -o -name "*.py" > cscope.files"

上面的函数,通过操作系统的不同,用不同的命令实现,将当前目录的源码文件导入到一个叫做cscope.files的文件中。这个文件是cscope用来生成数据库时的默认存储文件列表的文件。 不理解dir命令?看看这篇文章吧

http://hi.baidu.com/moodmusic/blog/item/888856ed309605d7b21cb141.html

silent! execute "!cscope -b"

这个命令就是csope在生成数据库,你会发现生成了一个cscope.out的文件,这个就是生成数据库,实际上如果加上参数-q来加快索引速度的话,还会生成cscope.in.out, cscope.po.out这两个文件,各个参数意义如下: -b : 默认情况下,cscope在生成数据库后,会进入cscope自己的界面,我们在vim中使用他,当然不希望有这样的界面,就可以用-b来屏蔽掉。

execute "cs add cscope.out"

最后这一步,就是在vim中添加了cscope.out这个数据库。 下面列出cscope的常用生成数据库选项:

-R: 在生成索引文件时,搜索子目录树中的代码,因为我们已经在cscope.files中把所有的文件都打印入了列表中,所以 -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,这样,你不用切换到你数据库文件所在的目录也可以使用它了。

好了,到了这里,cscope的原理大家应该都清楚了,那么在vim中怎么使用呢? "cscope find"的用法:

cs find c|d|e|f|g|i|s|t name 0 或 s 查找本 C 符号(可以跳过注释) 1 或 g 查找本定义 2 或 d 查找本函数调用的函数 3 或 c 查找调用本函数的函数 4 或 t 查找本字符串 6 或 e 查找本 egrep 模式 7 或 f 查找本文件 8 或 i 查找包含本文件的文件

但是谁也不想敲这么多命令吧,所以我在vimrc中建了这样一个映射:

nmap s :cs find s =expand(""):copen

nmap g :cs find g =expand("")

nmap c :cs find c =expand(""):copen

nmap t :cs find t =expand(""):copen

nmap e :cs find e =expand(""):copen

nmap f :cs find f =expand(""):copen

nmap i :cs find i ^=expand("")$:copen

nmap d :cs find d =expand(""):copen

实际上就是参考 cscope_maps.vim 这个文件,大家可以去下载他,然后直接放到plugin目录就行。 最后,我们来说一下cscope和ctags的兼容问题。我在vimrc中配置了一段代码:

if has("cscope")

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

set csto=0

set cst

set csverb

endif

官方解释如下:

http://vimcdoc.sourceforge.net/doc/if_cscop.html

简单来说,主要功能就是同时搜索ctags和cscope的标签,并且cscope优先扫描。 好啦,在vim(gvim)中使用cscope的介绍就到这里啦,有兴趣的朋友可以赶紧试一下啦~~

vim cscope java_在Vim(gvim)中使用cscope相关推荐

  1. [vim] vim中使用cscope的安装与使用

    From: http://blog.sina.com.cn/s/blog_498a6eeb0100v05m.html 1. 下载cscope-15.7 http://dldx.csdn.net/fd. ...

  2. GVIM/VIM常用快捷操作(更新中)

    ps:Gvim/Vim 常用快捷键 /命令模式下移动光标 h: 左移 l: 右移 j: 上移 k: 下移 (或者直接使用键盘的方向键) 0: 行首 $: 行尾 ctrl+w+w: 多窗口切换 ctrl ...

  3. [VIM]VIM/GVIM中代码的折叠和打开

    VIM/GVIM中代码的折叠和打开         前言:在查看代码的时候,如果代码十分冗长,尤其是c/c++系列的时候,代码结构比较让人难以理清,主要是各种注释.括号的匹配问题,虽然可以用%来查看匹 ...

  4. vim cscope java_【转】Cscope的使用(领略Vim + Cscope的强大魅力)

    [转]Cscope的使用(领略Vim + Cscope的强大魅力) 1.Cscope介绍 Cscope是类似于ctags一样的工具,但可以认为她是ctags的增强版,因为她比ctags能够做更多的事. ...

  5. vim中使用cscope的方法

    一.安装cscope 安装方式比较多样,可以在各自linux软件管理工具中安装,也可以去官网下载安装. sudo apt-get install cscope 二.插件安装 这里选择的是Vundle来 ...

  6. vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb

    vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb Easwy 添加评论 << 返回vim使用进阶: 目录 本节所用命令的帮助入口: :help vimgdb 在UNI ...

  7. 全世界最好的编辑器VIM之Windows配置(gvim)

    全世界最好的编辑器VIM之Windows配置(gvim),vundle插件管理,NERDTree插件,ctrlp插件,vim-nerdtree-tabs插件等 .vim本来就是很强大,很方便的编辑器, ...

  8. vim cscope php,使用Vim+Ctags+Cscope阅读源代码

    因为所有设计思想.内部机制都是 以代码的形式实现,所有的资料也都是为了更好的诠释代码.那么一个好的阅读工具,能 够提高阅读的效率和效果. • "Cscope"[4]为终端下的代码阅 ...

  9. vi/vim命令怎么在Linux系统中使用

    本篇文章为大家展示了vi/vim命令怎么在Linux系统中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获. 1.vi和vim的区别: 就是在进入一般命令模式 ...

最新文章

  1. c语言算定积分d的大小,你知道C语言怎么实现求定积分吗
  2. 专访《花亦山心之月》:朝夕光年首款自研国风手游有啥不一样?
  3. 20应用统计考研复试要点(part39)--概率论与数理统计
  4. [导入][你必须知道的.NET]第十回:品味类型---值类型与引用类型(下)-应用征途...
  5. Asterisk权威指南/第五章 用户设备配置
  6. mysql dbo_mysql-双重分组
  7. LeetCode 290. 单词规律(哈希)
  8. java 蓝桥杯算法训练 快速排序
  9. python爬虫实战(2)——爬取知乎热榜内容
  10. JavaScript和Chrome中的SSDP发现
  11. mysql 自动 分库 备份_MySQL分库备份的方法
  12. C++ memset 栈空间出现段错误
  13. SEC0000007-Unable to locate security server?
  14. 科技部正式发文:破除“唯论文”不良导向;网友:靠水论文拿奖励的人不开心了...
  15. datax(27):不太常见配置项querySql、preSql、postSql、splitPk
  16. 用友A8 mysql配置文件_用友nc 读取配置文件方法
  17. 圣地亚哥大学计算机科学专业,加州大学圣地亚哥分校计算机科学本科
  18. 怎样将一个Word表格拆分为两个
  19. NVisual-自动化网络拓扑
  20. 内蒙古自治区律师事务所排名情况

热门文章

  1. 简单的MySQL银行转账实例
  2. LoadRunner中IP欺骗功能详解
  3. 2019软科中国【计算机】专业大学排名
  4. 如何下载O2OA办公开发平台?
  5. 0.HDFS分布式文件系统
  6. 2021人才跳槽流动分析报告
  7. 保护光盘数据的八种加密方法
  8. 2022-2028全球与中国平板显示器溅射靶材市场现状及未来发展趋势
  9. thunderbird备份_如何使用Thunderbird备份基于Web的电子邮件帐户
  10. Windows使用控制面板工具来修改ip,网关,子网掩码