vim cscope java_在Vim(gvim)中使用cscope
之前已经详细的介绍了在 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相关推荐
- [vim] vim中使用cscope的安装与使用
From: http://blog.sina.com.cn/s/blog_498a6eeb0100v05m.html 1. 下载cscope-15.7 http://dldx.csdn.net/fd. ...
- GVIM/VIM常用快捷操作(更新中)
ps:Gvim/Vim 常用快捷键 /命令模式下移动光标 h: 左移 l: 右移 j: 上移 k: 下移 (或者直接使用键盘的方向键) 0: 行首 $: 行尾 ctrl+w+w: 多窗口切换 ctrl ...
- [VIM]VIM/GVIM中代码的折叠和打开
VIM/GVIM中代码的折叠和打开 前言:在查看代码的时候,如果代码十分冗长,尤其是c/c++系列的时候,代码结构比较让人难以理清,主要是各种注释.括号的匹配问题,虽然可以用%来查看匹 ...
- vim cscope java_【转】Cscope的使用(领略Vim + Cscope的强大魅力)
[转]Cscope的使用(领略Vim + Cscope的强大魅力) 1.Cscope介绍 Cscope是类似于ctags一样的工具,但可以认为她是ctags的增强版,因为她比ctags能够做更多的事. ...
- vim中使用cscope的方法
一.安装cscope 安装方式比较多样,可以在各自linux软件管理工具中安装,也可以去官网下载安装. sudo apt-get install cscope 二.插件安装 这里选择的是Vundle来 ...
- vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb
vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb Easwy 添加评论 << 返回vim使用进阶: 目录 本节所用命令的帮助入口: :help vimgdb 在UNI ...
- 全世界最好的编辑器VIM之Windows配置(gvim)
全世界最好的编辑器VIM之Windows配置(gvim),vundle插件管理,NERDTree插件,ctrlp插件,vim-nerdtree-tabs插件等 .vim本来就是很强大,很方便的编辑器, ...
- vim cscope php,使用Vim+Ctags+Cscope阅读源代码
因为所有设计思想.内部机制都是 以代码的形式实现,所有的资料也都是为了更好的诠释代码.那么一个好的阅读工具,能 够提高阅读的效率和效果. • "Cscope"[4]为终端下的代码阅 ...
- vi/vim命令怎么在Linux系统中使用
本篇文章为大家展示了vi/vim命令怎么在Linux系统中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获. 1.vi和vim的区别: 就是在进入一般命令模式 ...
最新文章
- c语言算定积分d的大小,你知道C语言怎么实现求定积分吗
- 专访《花亦山心之月》:朝夕光年首款自研国风手游有啥不一样?
- 20应用统计考研复试要点(part39)--概率论与数理统计
- [导入][你必须知道的.NET]第十回:品味类型---值类型与引用类型(下)-应用征途...
- Asterisk权威指南/第五章 用户设备配置
- mysql dbo_mysql-双重分组
- LeetCode 290. 单词规律(哈希)
- java 蓝桥杯算法训练 快速排序
- python爬虫实战(2)——爬取知乎热榜内容
- JavaScript和Chrome中的SSDP发现
- mysql 自动 分库 备份_MySQL分库备份的方法
- C++ memset 栈空间出现段错误
- SEC0000007-Unable to locate security server?
- 科技部正式发文:破除“唯论文”不良导向;网友:靠水论文拿奖励的人不开心了...
- datax(27):不太常见配置项querySql、preSql、postSql、splitPk
- 用友A8 mysql配置文件_用友nc 读取配置文件方法
- 圣地亚哥大学计算机科学专业,加州大学圣地亚哥分校计算机科学本科
- 怎样将一个Word表格拆分为两个
- NVisual-自动化网络拓扑
- 内蒙古自治区律师事务所排名情况