Ctags快速入门


在vim下阅读代码,特别是阅读不熟悉的代码时,ctags是一个提高效率的强大的工具。

1. ctags是什么?

ctags可以将代码中的函数、方法、类、变量和其他的标识符进行索引,将索引结果进行排序存储在tags中。在该文件中每一行就是一个tag。根据语言及生成时参数的不同,存储的具体内容也是不同的。

ctags当前支持41种语言,具体参考ctags支持的语言,若要新增语言也是十分方便的。

使用ctags,可以方便的在大项目中进行导航。在你不熟悉项目时,当你不确定一个方法到底做什么,或者如何使用时,可以直接跳转到方法的定义位置。当然,也可以很方便的跳转到原来的地方。

2. ctags的安装

在Ubuntu下安装ctags:

$ sudo apt-get install ctags

3. ctags的使用

首先,进入到要进行索引代码的目录中,执行以下命令:

$ ctags -R .

将会递归的遍历当前文件夹,对所有它认识的文件进行索引,并将结果写入到当前目录下的tags文件。一般它很快就执行完了,速度取决于你项目中源文件的多少。

其他参数使用的不多。

4. ctags在vim的使用示例

在代码的目录使用vim打开源文件开始浏览代码,vim将自动加载当前目录中的tags文件。

假如你有如下的两个文件:

global.h

#define NAME "Furzoom"

int g_count;

main.c

#include <stdio.h>
#include "global.h" void say_hello(void)
{
printf("%s\n", NAME);
printf("Hello\n");
} int main()
{
printf("%d\n", g_count);
say_hello();
return 0;
}

先生成tags,然后在当前目录打开main.c文件。

当光标停留在main()函数中的say_hello函数调用上时,按下

5. ctags在vim中的快捷键

i

- <C-]>,跳转到定义处。

- <C-T>,跳回上次跳转之前。

- :ts或者:tselect,显示tag命令选择的列表,半进行跳转。

- :tn或者:tnext,跳转到列表中下一个。

- :tp或者:tprevious,跳转到列表中上一个。

- :tf或者:tfirst,跳转到列表中第一个。

- :tl或者:tlast,跳转到列表中的最后一个。

https://courses.cs.washington.edu/courses/cse451/10au/tutorials/tutorial_ctags.html

https://andrew.stwrt.ca/posts/vim-ctags/

http://ctags.sourceforge.net/languages.html

Ctags快速入门的更多相关文章

  1. Emacs快速入门

    Emacs 快速入门 Emacs 启动: 直接打emacs, 如果有X-windows就会开视窗. 如果不想用X 的版本, 就用 emacs -nw (No windows)起动. 符号说明 C-X ...

  2. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  3. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  4. 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

    今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...

  5. 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  6. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  7. Mybatis框架 的快速入门

    MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...

  8. grunt快速入门

    快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...

  9. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

随机推荐

  1. POJ2405-Beavergnaw

    Beavergnaw Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6204   Accepted: 4090 Descri ...

  2. 连接Zookeeper操作

    public class ZKConnector implements Watcher{ private static final Logger logger =LoggerFactory.getLo ...

  3. 2016.6.21 maven使用cmd新建项目时,failed to execute goal org.apache.maven.plugins:maven-archetye-plugin:2.4:generate...

    在学习maven的时候,想要新建一个maven工程,在命令行执行create或generate命令. 错误如图所示: failed to execute goal org.apache.maven.p ...

  4. Redis 在 Java 中的使用

    转:http://blog.csdn.net/jiangtao_st/article/details/8256610 一.下载jar包 https://github.com/xetorthio/jed ...

  5. 谷歌浏览器插件-html页面js事件查看器

    谷歌浏览器插件-html页面js事件查看器 1.下载 下载地址:http://files.cnblogs.com/files/graceup/VisualEvent.zip 解压得到文件:Visual ...

  6. 『HTML5梦幻之旅』 - 仿Qt演示样例Drag and Drop Robot(换装机器人)

    起源 在Qt的演示样例中看到了一个有趣的demo.截图例如以下: 这个demo的名字叫Drag and Drop Robot,简单概括而言,在这个demo中,能够把机器人四周的颜色拖动到机器人的各个部 ...

  7. IOS知识点收集

    17  duplicate symbols for architecture armv7s 用cocoapods 的时候出现,这种错误一般是由重复引用库文件引起. 原因:自己尝试添加Reachabil ...

  8. 一款炫酷Loading动画--载入成功

    简单介绍 昨天在简书上看到一篇文章.介绍了一个载入动画的实现过程 一款Loading动画的实现思路(一) 仅仅可惜原动画是IOS上制作的.而看了一下.作者的实现思路比較复杂,于是趁着空暇写了一个And ...

  9. 安装配置 Kafka Manager 分布式管理工具

    Kafka Manager 特性,它支持以下内容(官方译解): 管理多个群集容易检查集群状态(主题,消费者,偏移量,经纪人,副本分发,分区分配)运行首选副本选举使用选项生成分区分配,以选择要使用的代理 ...

  10. SQL EXISTS 与 IN

    EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或FalseEXISTS 指定一个子查询,检测行的存在. EXISTS与IN的使用效率的问题,通常情 ...