Ctags快速入门
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快速入门的更多相关文章
- Emacs快速入门
Emacs 快速入门 Emacs 启动: 直接打emacs, 如果有X-windows就会开视窗. 如果不想用X 的版本, 就用 emacs -nw (No windows)起动. 符号说明 C-X ...
- Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
- SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...
- 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)
今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- Mybatis框架 的快速入门
MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...
- grunt快速入门
快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...
- 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
随机推荐
- Linux学习之十六-Linux用户管理
Linux用户管理 Linux系统跟Windows系统一样,可以创建不同的用户,不同的用户组.在不同用户下使用系统具有相应的权限 创建一个普通用户时,会修改几个文件,拷贝一些初始文件到用户家目录中 修 ...
- JAVA Eclipse ActivityManager Warning Activity not started, its current task has been brought to the front怎么办
Eclipse运行提示Activity not started,因为当前程序已经在运行,需要退出当前程序再测试
- HTTP学习笔记(一)报文和连接管理
对TCP/IP协议簇有些了解的同学们应该都知道.TCP/IP协议通过精简ISO网络7层协议(事实上了解历史渊源的话,TCP/IP协议本来目的并非简化ISO的7层协议.仅仅是因为ISO协议簇制定速度慢于 ...
- remove-duplicates-from-sorted-list I&II——去除链表中重复项
I.Given a sorted linked list, delete all duplicates such that each element appear only once. For exa ...
- JS 的引用赋值与传值赋值
这个问题说大不大说小不小,如果你有幸踩了这个坑,一定会找这篇文章,哈哈~ 现说一下JS数字的类型:基本类型和引用类型 先看下下面两个栗子: var a = 30; var b = a; a = 20; ...
- 自制小工具大大加速MySQL SQL语句优化(附源码)
引言 优化SQL,是DBA常见的工作之一.如何高效.快速地优化一条语句,是每个DBA经常要面对的一个问题.在日常的优化工作中,我发现有很多操作是在优化过程中必不可少的步骤.然而这些步骤重复性的执行,又 ...
- SQL Server外连接、内连接、交叉连接
小编在做组织部维护最后收尾工作的时候,遇到了这样一个问题,须要将定性考核得分查出来.定量考核相应的数据查出来并进行得分计算.附加分查出来,最后将这三部分信息汇总之后得到总成绩,假设当中一项成绩没有进行 ...
- Dubbo(一)Dubbo资料
这个资料绝对权威了:http://dubbo.io/user-guide/
- 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
// ConsoleApplication10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream& ...
- Visual Studio 2017 for Mac Preview
Microsoft Visual Studio 2017 for Mac Preview 下载+安装+案例Demo 目录: 0. 前言 1. 在线安装器 2. 安装VS 3. HelloWorld 4 ...