linux源码浏览,linux 系统下使用ctags浏览源码

文章目录

介绍

下载

使用说明

生成tags文件

查找操作(3种使用方式)

直接在命令行上操作

在vim的模式下使用": ta"命令

在光标指定位置下直接使用"ctrl + ]"

多 个 匹 配

猜 测 标 签 名

介绍

Ctags 是 vim 下方便代码阅读的工具。尽管 ctags 也可以支持其它编辑器,但是它正式支持的只有 vim。并且 vim 中已经默认安装 ctags,它可以帮助程序员很容易地浏览源代码;ctags 最先是用来生成 C 代码的 tags 文件,后来扩展成可以生成各类语言的 tags,但是我主要还是用来阅读 C 源代码

下载

sudo apt-get install ctags (ubuntu)

(RedHat系列使用:yum install ctags)

使用说明

使用 vim 打开相关使用 tags 标记的源文件时,当前目录要在 tags 所在目录下执行 vim 命令。如果在其子目录下边执行 vim 打开相应文件,默认是使用不了 ctags 的跳转功能的。解决方式:

设置 ~/vim/.vimrc,加入一行,则不用手动设置tags路径:

set tags=~/path/tags

生成tags文件

安装成功后,要为源码文件生成tags文件,才可享受ctags为阅读代码带来的便利。

$ ctags -R

递归的为当前目录及子目录下的所有代码文件生成tags文件

为某些源码生成tags文件,使用如下命令

$ ctags filename.c filename1.c file.h

$ ctags *.c *.h

修改程序后, 比如增加了函数定义, 删除了变量定义, tags文件不能自动rebuild, 你必须手动再运行一下命令:

$ ctags -R

查找操作(3种使用方式)

直接在命令行上操作

[root@localhost ~]# vim -t main

[root@localhost ~]# vim -t pos_create_task

结果:直接打开对应符号对应文件,并定位到该符号的定义位置。常用在知道符号,但不知道在哪个文件模块中的位置。

在vim的模式下使用": ta"命令

:ta main

:ta pos_create_task

在光标指定位置下直接使用"ctrl + ]"

在光标指定的位置下直接使用 “crtl + ]” 就可以定位到函数的定义位置;使用 “ctrl + t” 快捷键返回到上次跳转之前的位置。

关于ctags的用法很多,以下是我们列举的部分:

–>“ctrl + t"退回到原来的地方

–>”[{“转到上一个位于第一列的”{"

–>"}]“转到下一个位于第一列的”{" /* 似乎不管用 */

–>"{“转到上一个空行

–>”}"转到下一个空行

–>“gd"转到当前光标所指的局部变量的定义

–>“ * ”转到当前光标所指的单词一次出现的地方

–>”#"转到当前光标所指的单词上一次出现的地方

多 个 匹 配

当一个函数(或类中的方法)被定义多次, “:tags” 命令会跳转到第一处。如果在当前

文件中存在匹配,那它将会被首先使用。

你现在可以跳转到同一个标签的其它匹配处:

:tnext

重复执行这个命令可以找到更多的匹配。如果存在很多匹配,你可以选择要跳转到哪一

个:

:tselect tagname

Vim 会为你展示一个选择列表:

猜 测 标 签 名

命令行补全是避免输入长标签名的好办法。只需输入开始的一部分然后按 :

:tag write_

你会得到第一个匹配。如果这不是你想要的,重复输入 直到你找到正确的匹配。

有时你只知道一个函数名的一部分,或是你有很多以相同字符串开头而结尾不同的标

记。这时你可以告诉 Vim 使用一个模式来查找标签。

假设你要跳转到一个包含 “block” 的标签。首先输入:

:tag /block

现在再利用命令行补全功能:输入 。Vim 会找到所有包含 “block” 的标签并使用

第一个匹配。

标签名前面的 “/” 告诉 Vim 这不是一个确定的标签名而是一个模式。你可以利用有

关查找模式的所有特性。举个列子,假设你要选择所有以 “write_” 开头的标签:

:tselect /^write_

“^” 指定标签以 “write_” 开头,否则在中间含有 “write_” 的标签名也会被找到。类似

地,"___FCKpd___0quot; 指定标签名结尾处的匹配。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值