前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux实用技巧:你该使用ctags查找源码了

linux实用技巧:你该使用ctags查找源码了

作者头像
小小科
发布2018-05-02 17:29:01
4.7K0
发布2018-05-02 17:29:01
举报
文章被收录于专栏:北京马哥教育北京马哥教育

linux实用技巧:你该使用ctags查找源码了


1.ctags简介: “哦,这个多的文件,我该如何去查看XX函数的实现!”相信这是很多朋友的抱怨。太多的文件导致我们无法去定位一个函数的实现或者一个宏定义的位置。显然对于源码的阅读和个人的学习都是非常不利的。多么希望有一个软件能够输入命令就能够精确的定位函数的位置。是的,现在有这么一个工具:ctags,它需要和vim编辑器配合使用,让源码阅读可以更加轻松。 什么是ctags? ctags(Generate tag files for source code)是vim下方便代码阅读的工具。尽管ctags也可以支持其它编辑器,但是它正式支持的只有VIM。并且VIM中已经默认安装了Ctags,它可以帮助程序员很容易地浏览源代码。 ctags更新地址:http://ctags.sourceforge.net/,这个网站是ctags的官方网站,你可以在上面下载到关于ctags的最新内容。 ctags能够定位什么内容? 1)用#define定义的宏 2)枚举型变量的值 3)函数的定义、原型和声明 4)名字空间(namespace) 5)类型定义(typedefs) 6)变量(包括定义和声明) 7)类(class)、结构(struct)、枚举类型(enum)和联合(union) 8)类、结构和联合中成员变量或函数 2.配置自己的环境满足ctags: 安装ctags,如果是redhat,则直接使用yum命令安装:

在指定的源码位置生成tags文件,并且我们添加很多参数来完善ctags的功能(为了体现其功能的强大,我用它来生成linux源码的tags文件):

然后我们查看tags内容就可以发现,原来tags就是linux内核代码中各个元素的索引,这也就是ctags结合vim可以快速进行定位的原因了(查询就是通过这个文件内容来定位的):

tags路径必须写入vim的配置文件中,才能在vim里面正确跳转,所以我们要进行添加:

完成之后我们就可以进行查找了,这里我们以printf的为例(你很快就会见识到ctags的威力了),如果是有经验的程序员,我想你一定会很快的反应出printf函数在什么文件中,呵呵。还好有经验的人并不是很多。。。 ctags的使用方法有一下几种: 1.直接在命令行上操作:

2.在vim的模式下用“:ta ”命令:

3.在光标制定的位置下直接使用“ctrl+]”,就可以定位到函数的定义位置: 关于ctags的用法有很多,以下是我们列举的部分: "Ctrl-o"退回原来的地方; [{ 转到上一个位于第一列的"{"; }] 转到下一个位于第一列的"{"; { 转到上一个空行; } 转到下一个空行; gd 转到当前光标所指的局部变量的定义; * 转到当前光标所指的单词下一次出现的地方 ; # 转到当前光标所指的单词上一次出现的地方; 关于ctags更多的命令大家可以查看man手册,以后妈妈再也不用担心我读源代码了。。。^_^

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-10-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马哥Linux运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.ctags简介: “哦,这个多的文件,我该如何去查看XX函数的实现!”相信这是很多朋友的抱怨。太多的文件导致我们无法去定位一个函数的实现或者一个宏定义的位置。显然对于源码的阅读和个人的学习都是非常不利的。多么希望有一个软件能够输入命令就能够精确的定位函数的位置。是的,现在有这么一个工具:ctags,它需要和vim编辑器配合使用,让源码阅读可以更加轻松。 什么是ctags? ctags(Generate tag files for source code)是vim下方便代码阅读的工具。尽管ctags也可以支持其它编辑器,但是它正式支持的只有VIM。并且VIM中已经默认安装了Ctags,它可以帮助程序员很容易地浏览源代码。 ctags更新地址:http://ctags.sourceforge.net/,这个网站是ctags的官方网站,你可以在上面下载到关于ctags的最新内容。 ctags能够定位什么内容? 1)用#define定义的宏 2)枚举型变量的值 3)函数的定义、原型和声明 4)名字空间(namespace) 5)类型定义(typedefs) 6)变量(包括定义和声明) 7)类(class)、结构(struct)、枚举类型(enum)和联合(union) 8)类、结构和联合中成员变量或函数 2.配置自己的环境满足ctags: 安装ctags,如果是redhat,则直接使用yum命令安装:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档