vim + ctags + taglist + cscope + cppcomplete + global 使用初探

由于本人比较喜欢在终端状态下的vim,所以gvim下的扩展使用的不多。这里介绍的也是我简单的使用以上扩展的一点点体会。请大家指正。 emacs 不会用,也没有比较过拉。

1、大体感觉,(因为使用时间不长,不全面)
总体使用的感觉定位查找类型定义基本可以用,但自动补全类型方面由于ctags的功能有限,感觉在大工程时,不一定很好用。

大型程序一定要global的参与,它的分析比较全面,但在vim中的提示信息有限。

taglist 精干,需要ctags的支撑,直接可以在左边列出函数列表,全局参数列表。(可以排序)

cscope 比较强大,可以对函数以及部分类型定义进行跳转,但有些BUG,好像在某些条件下无法正确找到分析枚举的定义。

cppcomplete 需要ctags的支撑,可以补全类型或者函数名(可不是普通Ctrl+P/N的那种)

global 新版本可以嵌入vim使用,提供比较完整解析和类型索引,和cscope比,稍微差些的就是对类型引用的打印列表中没有标识这个引用在什么函数中进行的。其实我的感觉global可能不是为vim所生,它的主要目的是用html的方式进行表达相关的关联关系和索引,使用起来感觉没有cscope的那么贴切。

2、相关的扩展的安装
代码:

apt-get install exuberant-ctags cscope global

cppcomplete 和 taglist 要到www.vim.org的扩展列表中下载。

taglist 的下载地址:
http://www.vim.org/scripts/script.php?script_id=273
cppcomplete 的下载地址:
http://www.vim.org/scripts/script.php?script_id=527

然后在 建立目录
代码:

$HOME/.vim/plugin

将下载的cppcomplete.vim 和 taglist.vim拷贝到$HOME/.vim/plugin中。
安装了global后,最新4.8.6 以上版本有带vim的扩展,将它也拷贝到 $HOME/.vim/plugin

debian sid 版本global安装后扩展文件在
代码:

/usr/share/doc/global/examples/gtags.vim.gz

需要拷贝到$HOME/.vim/plugin后解压,解压方法:
代码:

gzip -d gtags.vim.gz

3、使用这些工具
1)准备工作,先修改一下$HOME/.vimrc文件

为了更好的使用cscope请添加如下内容,这样Ctrl-]的跳转将由cscope的tags进行分析。
代码:

if has("cscope") set csprg=/usr/bin/cscope set csto=0 set cst set nocsverb " add any database in current directory if filereadable("cscope.out") cs add cscope.out " else add database pointed to by environment elseif $CSCOPE_DB != "" cs add $CSCOPE_DB endif set csverb set cscopetag set cscopequickfix=s-,g-,c-,d-,t-,e-,f-,i- endif

2)使用cscope
cscope的tag生成最简单的方法是:
在你的开发工程的最上层目录执行cscope-indexer,它会遍历下面的所有目录,生成两个文件,一个是cscope.files,这个文件记录需要生成tags的文件名,可以手工修改,另一个是cscope格式的tags文件cscope.out。

完成后,你在生成了cscope.out的目录打开工程的任意文件,就可以使用Ctrl-]跳转查找类型定义了。
代码:

cs f s xxxx 查找xxxx出现的地方,它能详细列出哪些文件的哪行的哪个函数引用,以及该行的内容,比较不错。 :)

它的所有命令的使用请参考:
代码:

help cscope

3)使用taglist
taglist的功能是即时生成当前文件的函数列表和全局变量列表,便于索引。
在vim中命令模式下使用
Tlist 打开或者关闭当前文件的索引;
TlistSync 立即在打开的索引窗口中定位当前的光标所在位置属于哪个函数或者结构定义中。
还有其他命令,请参考它的帮助文件。

4)ctags的使用
其实cscope是用来替代ctags功能的,ctags的应用广泛,还有其他很多的软件依赖它。

例如要生成cppcomplete需要的tags文件的话,需要运行下面的命令:
代码:

ctags -n -f cppcomplete.tags --fields=+ai --C++-types=+p * -L cscope.files

注意,我在最后使用了参数"-L cscope.files" 这仅仅是借用拉cscope生成的文件索引来帮助ctags去查询相关工程文件生成tags。

5)使用cppcomplete
cppcomplete的使用我只是简单的发现它可以根据上述方法生成的tags文件来自动补全类型成员。
使用很简单,就是在你需要补全类型成员时,按F8键就可以拉。它一般第一次使用时,需要让你确认是使用已有的tags文件还是再生成一次。一般我们自己控制生成tags文件的时机,它就使用就行拉。
但它也受到ctags的分析能力比较差的限制,可能不是每次都能帮到你。

6)使用global
在工程的最上层目录执行命令:
gtags
等待它完成所有需要的global自己格式的tags的生成
生成完后,需要的就是在生成tags的目录打开你的工程的任意文件,用如下命令查询相关类型引用和关联关系:
代码:

Gtags xxxx 查找xxxx的定义 Gtags -r xxxx 查找xxxx的引用 Gtags -s xxxx 查找xxxx出现的地方

它的提示信息很有显,不如cscope更直观,但对大型分析的比较完整。
有时它无法正常分析的类型 可以试试用带-s 的参数的方式找找类型定义。再不行,我就不清楚拉

4、草草的收尾
我使用它们也是一点一点的摸索的没有系统的完整的使用过,也受限于本人的Linux使用经验和工作关系,所以非常简单的使用体会给大家一个参考,希望能有所帮助。更希望后来者能不断补充相关的使用体会。大家都需要交流提高,呵呵。

时间: 2024-08-03 06:32:43

vim + ctags + taglist + cscope + cppcomplete + global 使用初探的相关文章

linux下C++开发工具

就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样.Emacs, vi, eclipse, anjuta,kdevelop等层出不穷.Windows下,开发工具多以集成开发环境IDE的形式展现给最终用户.例如,VS2005集成了编辑器,宏汇编ml,C /C++编译器cl,资源编译器rc,调试器,文档生成工具, nmake.它们以集成方式提供给最终用户,对于初学者而言十分方便.但是,这种商业模式,直接导致用户

Ubuntu用Vim打造Linux程序员编程神器(ctags+cscope+taglist+code_complete)

所谓"工欲善其事,必先利其器",所谓"磨刀不误砍柴工". 在Linux下,vim是一种最常见的编辑器,很多linux的发行版就自带了(不过 Ubuntu目前时需要自己安装的,默认只带了vi).今天搞了半天了Vim,通过几个插件来武装我的vim,使其能向传说中的一样成为C/C++程序员的利器. 通过配置和插件,实现的功能有:语法高亮+自动缩进+函数自动补全+变量/函数的跟踪+列出源代码中的函数/变量等 用到的工具有:Vim+.vimrc配置文件+code_comple

linux下阅读源代码的工具

说来真是惭愧呀.一直在用VIM 做开发.却不知道VI 里还有这么好使的工具.以前一直都是用: find -type f -print | xargs grep -i **** 在源代码里查找.          原来Linux下也有类似于Souce Insight工具.以下是引用人家的文章.http://blog.chinaunix.net/u1/56619/showart_1822993.html   linux源代码分析和阅读工具比较 Windows下的源码阅读工具Souce Insight

Vim编程之:tags,cscope,taglist

最近VIM用得比较多,所以在学了不少.在这里对收获到的东西做一个总结. 1.编程四要素vim,ctags,cscope,taglist vim配合这3件东西之后,极为强大.与SourceInsight有一拼. 1.1 ctags ctags叫作"标签",它记录源码中所有标识符定义所在的文件与行号. (1)安装 先在命令终端运行一下: $ ctags --version 看一下当前系统有有没有安装ctags,如果有就跳过本节. 我是在http://ctags.sourceforge.ne

Vim cscope

/********************************************************************** * Vim cscope * 说明: * 之前使用Vim进行代码跟踪,都是通过Vim+ctags,传言中是cscope会相对 * 更强大,更有效,所以抽点空学习一下. * * 2016-4-10 深圳 南山平山村 曾剑锋 *******************************************************************

【Linux基础】vim配置及插件安装管理

1 写在前面   Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事, 必先利其器"嘛, 我想如果有一个很好用的IDE, 那些Linux牛人也会欢迎的. 这都是劳动人民的美好愿望罢了, 我今天教大家把gvim改装成一个简易IDE, 说它"简易"是界面上看起来&quo

[linux]vim快捷键

1. 关于Vim vim是我最喜欢的编辑器,也是linux下第二强大的编辑器. 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高效. 如果是初学vi,运行一下vimtutor是个聪明的决定. (如果你的系统环境不是中文,而你想使用中文的vimtutor,就运行vimtutor zh) 1.1 Vim的几种模式 正常模式:可以使用快捷键命令,或按:输入命令行. 插入模式:可以输入文本,在正常模式下,按i.a.o等都可以进入插入模式. 可视模式:正常模式下按v可以进入

听说这是关于Vim快捷键最全的资料

简评:Vim编辑器在程序员界可谓无人不知,无人不晓,它功能强大,扩展性极高.小编就经常看到高手可以使用Vim熟练地对文本进行各种操作,那可以比鼠标点来点去快得多了.但想成为Vim高手可没那么简单,摆在我们这些新手的第一关就是记忆Vim下各种快捷键的用法,为了方便大家学习小编特地整理大量的快捷键用法供大家参考,希望大家早日成为Vim大神! 1. 关于Vim vim是我最喜欢的编辑器,也是linux下第二强大的编辑器. 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高

ctags使用方法

 Vi大家都很熟悉,某些情况下它是我们在Linux下唯一可用的文本编辑器.其实我们平时所指的VI其实是VIM(ViImproved,VI增强版).有人常常拿VIM和emacs比较,VIM尽管不象emacs那样有那么多的功能,但是比emacs更方便.好用.VIM简单易用,只要看看VIM自带的vitutor,大约只要20分钟就能掌握VIM的用法.对于Linux下的C/C++的程序员,使用VIM+Ctags的组合来写程序也许是最佳的选择.^_^      VI的使用方法这里就不罗嗦了,本文假设大家已花