您的位置:首页 > 其它

vim下ctags的安装和使用基础

2013-09-30 21:44 281 查看
最近帮老师当助教,顺便接触了一下vim和ctags,说实话,linux以前用的不太多,除了写过几个网络实验箱的驱动程序以外基本上没怎么用过,所以这次也算是个很好的机会吧。 对linux稍加熟悉的同学都肯定知道Vi命令,这个是linux自带的编辑工具,应该相当于windows的记事本吧,所谓vim,是一个类似于Vi的文本编辑器,不过在Vi的基础上增加了很多新的特性,Vim普遍被推崇为类Vi编辑器中最好的一个,事实上Vim真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码编辑器大奖,又将Emacs推至二线,总的来看,Vim和Emacs同样都是非常优秀的文本编辑器。我记得有个NB的师兄曾经对我说过,在程序员的世界里,Vim和Emacs分别被称之为“神的编辑器”和“编辑器之神”,只是时间长了我现在记不清他俩是怎样一个对应关系了。 废话说了不少了,下面说说ctags,摘抄一段维基百科上的定义,帮助理解,“Ctags是一个用于从程序源代码树产生索引文件(或tag文件),从而便于文本编辑器来实现快速定位的实用工具”。在产生的tag文件中,每一个tag的入口指向了一个编程语言的对象。这个对象可以是变量定义、函数、类或其他的物件。Ctags是开放源代码的程序。支持Ctags产生的tag文件的编辑器以及编辑器插件包括:Vim,Vile,Lemmy,等等。 下面简单说下ctags的安装,其实在linux下就一句命令:apt-get install ctags,和linux下其他软件的安装一样,简单吧!当然,可能有时候由于源或者其他东西的原因,你可能单靠这一句命令还搞不定,这时候我推荐一种看起来很笨的方法,不过该方法确实好用,上周五上机的时候有一位同学就碰到了这样的问题,我的方法就是到官方网站上(http://ctags.sourceforge.net/)下载安装包,然后解压,执行./configure,然后make,make install就OK了,这样安装一般不会有别的问题了。 下面简单说下ctags文件,这可是ctags的核心啊,首先需要执行ctags -R --c++-kinds=+px --fields=+iaS --extra=+q .生成一个tags文件,虽然有一大串的参数,但是其实我们使用的时候直接使用ctags -R .就OK,其中参数R表示递归,.表示所有文件,简单来说就是在当前目录下递归的对所有代码文件构建源代码树(存储在tags文件中),执行完这个命令以后就可以在当前文件夹下看到生成了一个tags文件,就是这个文件记录了你所有的代码结构,有兴趣的同学可以打开这个文件看一下,每一行大概的结构是类似这样的:A file.c 12;" d;下面具体解释一下,A就是代码结构树中的标示符(变量、结构体或是函数名称等),file.c就是这个标示符(变量或是结构体、函数等)所在的文件名称,可想而知,随后的12就表示在这个文件中的行数,注意,在行号后面有一个很明显的分隔符(;"),一开始我也没搞懂这个分隔符到底有什么作用,后来查了一下,说是为了兼容Vi,让Vi忽略后面的字段(目测Vi遇到这个符号就不会再读取后面的字段了),后面的d表示这个标示符的类型,比如究竟是普通变量,还是函数名称等,其实这个字段是可以省略的,只不过在生成tags文件的时候都自动生成了。 了解了tags文件,下面该真正进入核心了解怎样使用ctags了。在生成了tags文件之后,就可以在使用vim的时候使用ctags的功能了,最常用的操作就是快捷键ctrl+]和ctrl+t,如果你在编辑模式下将光标定位到某个标示符,然后进入vim命令模式下按快捷键ctrl+],就会跳转到改标示符的定义,然后通过ctrl+t就会跳转回到上一个位置。当然,你可能会发现按照上面说的很可能不会成功,这是为什么呢?原因就在于vim很可能没有办法知道tags文件的存在,又或者你生成的tags文件中并不包括所要编辑的文件的代码结构信息。针对第一种情况,上面我说的之所以成功就在于你要通过vim编辑的文件和生成的tags文件存在同一个目录下,这样的情况下Vim当然可以很方便的就找到tags文件,所以它能够自动的使用tags文件中的信息实现跳转,如果你的tags文件和要编辑的文件不在同一个文件夹下,那么就需要通过配置Vim来实现,通俗的讲,就是要告诉Vim上哪里去找tags文件,实现的方法比较多,且听我一一道来,第一种,如果你只是临时的使用一次ctags跳转,那么你完全可以在vim命令模式下使用:set tags=../tags之类的命令来实现,这个命令就是告诉Vim:在我本次编辑过程中如果我要使用ctags跳转,你就上../tags去找相关的信息就行了(../tags就是你存放的tags文件),这种方法的不便之处就是当你完成本次编辑之后推出保存,下一次编辑同样的文本的时候,Vim又会出现找不到tags的问题,也就是说你告诉它一次只能使用到本次编辑结束(关闭编辑)它就忘记了,为了能够让Vim“永远”记住tags文件的位置,我们介绍第二个方法,那就是直接边界.vimrc文件,相信稍微了解vim的人都知道这个文件,话说我一个哥们儿曾经就因为丢失了这个文件捶胸顿足整整两天!!!这就是整个Vim的核心配置文件,只需要在其中加入一句话就可以了:set tags+=steve/tags;其中steve/tags改成你的tags文件所在的位置就可以了,这样在每次使用vim的时候他就能自动找到tags文件实现跳转了。 下面说一些可能用的不多的,网上很多帖子建议大家map一个快捷键生成tags文件,其实我不是很建议大家这么做,如果只是一般的代码调试,也没必要为了图这点儿方便重新去记众多的组合快捷键,另一方面,如果设定了这样一个快捷键,可能你会习惯性的在每个文件夹下都生成一个tags文件,其实在一个项目中有一个整体的tags就足够了(可能有些人不同意这个观点)。
最后补一句,晚上抽空写的第一篇博客,可能有些东西写的不够好,以后慢慢改吧,欢迎交流!
本文出自 “书山有路” 博客,请务必保留此出处http://stevekeepgoing.blog.51cto.com/7993033/1303898
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: