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快速入门之安全策 ...
随机推荐
- netty实现长连接心跳检
主要逻辑: 使用netty实现长连接,主要靠心跳来维持服务器端及客户端连接. 实现的逻辑主要是: 服务器端方面: 1, 服务器在网络空闲操作一定时间后,服务端失败心跳计数器加1. 2, 如果收到客户端 ...
- c语言单链表实现
/************************************************************************* > File Name: singleLin ...
- Java程序员新手老手都离不开八大开发工具
以下这8个工具,从代码构建到错误挤压,覆盖Java开发的全域.学习这些工具可以帮助你改善代码质量,成为一个更高效的Java开发人员.Java这个大世界中正在不断涌现新的工具.实用程序和库.如果你的首选 ...
- OpenStack 安装教程(使用Fuel )
OpenStack Fuel 安装教程 1介绍 OpenStack 是由 Rackspace 和 NASA 共同开发的云计算平台,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基 ...
- vue2.0 仿手机新闻站(二)项目结构搭建 及 路由配置
1.项目结构 $ vue init webpack-simple news $ npm install vuex vue-router axios style-loader css-loader -D ...
- linux init->upstart->systemd
http://en.wikipedia.org/wiki/Init init From Wikipedia, the free encyclopedia This article is abo ...
- 开发ActiveX控件调用另一个ActiveX系列1——开发一个MFC ActiveX控件
ActiveX开发的教程有很多,我也从中受益匪浅,例如以下这几篇: 基本教程:http://www.cnblogs.com/guenli/articles/1629915.html 注意事项:http ...
- HTML5开发移动web应用——SAP UI5篇(8)
本次对之前学习的SAP UI5框架知识进行简单小结.以及重点部分知识的梳理. 1.在UI5使用过程中,命名空间的概念非常重要. 2.一般的sap组件引用格式例如以下: sap.ui.define([ ...
- 【问】Windows下C++局部变量在内存中的分布问题
原本是为了看看C++对象模型中子对象赋值给一个父对象和父类型指针指向的域时,到底会不会切割,就打开codebloks写了下面的代码,编译器选的是GNU. #define DEBUG(X) std::c ...
- 用GetTickCount()计算一段代码执行耗费的时间的小例子
var aNow,aThen,aTime:Longint; begin aThen := GetTickCount(); Sleep();//代码段 aNow := GetTickCount(); a ...