###简介##   ctags(Generate tag files for source code)是 vim下方便代码阅读的工具。尽管 ctags 也可以支持其它编辑器,但是它正式支持的只有 vim。并且 vim 中已经默认安装了Ctags,它可以帮助程序员很容易地浏览源代码。 ctags 最先是用来生成C代码的 tags 文件,后来扩展成可以生成各类语言的 tags, 有些语言也有专有的 tags 生成工具(比如 java 的 jtags, python 的 ptags).

###用途###   标签检索,特别适用于大型项目的源代码。 ###安装### $ sudo apt-get install ctags

说明:以上针对 Ubuntu/Debian 系统,其他的系统按照以下步骤:

(1) 官网下载源码

(2) 解压缩后执行命令

$ ./configure

$ make

$ make install

###ctags配置###   使用sudo vim /etc/vim/vimrc 编辑vim的配置文档,在其中加入如下命令:

(1) set tags=/home/zhouyl/linux-3.4.7/tags; "后面的路径是使用ctags -R 后生成的tags文件所在目录,如果需要配置多个tags,只需如下再添加即可

(2) set tags=/home/zhouyl/rap/libpcap-1.3.0/tags;

(3) set autochdir ###使用###   在源码目录下执行 ctags -R *

root@thinkLinux:linux-2.6.32.63# ctags -R *

root@thinkLinux:linux-2.6.32.63# ls

arch Documentation init MAINTAINERS REPORTING-BUGS tags

block drivers ipc Makefile samples tools

COPYING firmware Kbuild mm scripts usr

CREDITS fs kernel net security virt

crypto include lib README sound

可以发现,目录下生成了一个 tags (标签)文件,即目录索引   “-R” 表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录。“*” 表示所有文件。这条命令会在当前目录下产生一个 “tags” 文件,当用户在当前目录中运行 vi/vim 时,会自动载入此 tags 文件。举个例子:键入 vim 后出现

在 vim 文件切换底行模式,输入 : cstag 关键字   Tags文件中包括这些对象的列表:用 #define 定义的宏枚举型变量的值函数的定义、原型和声明名字空间(namespace)类型定义(typedefs)变量(包括定义和声明)类(class)、结构(struct)、枚举类型(enum)和联合(union)类、结构和联合中成员变量或函数 vim 用这个 “tags” 文件来定位上面这些做了标记的对象。

(1) ctrl + } :连续查找关键字 要先将光标移动到关键字处

(2) ctrl + T : 返回上一次查找关键字

(3) 查找时出现多页关键字处理:两次 ESC 进入选择界面

root@thinkLinux:linux-2.6.32.63# vim -t task_struct

进入指定函数 task_struct,如下:

不常用命令

(1) $ vi –t tag (请把 tag 替换为您欲查找的变量或函数名)

(2) :ts (ts 助记字:tagslist, “:” 开头的命令为 vi/vim 中命令行模式命令)

(3) :tp (tp 助记字:tagspreview) --- 此命令不常用,可以不用记

(4) :tn (tn 助记字:tagsnext) --- 此命令不常用,可以不用记

###注意###   在 vi/vim 命令行模式 “:ts”命令就能列出一个列表供用户选择。

“:tp”为上一个tag标记文件,

“:tn”为下一个tag标记文件。

当然,若当前tags文件中用户所查找的变量或函数名只有一个,“:tp,:tn”命令不可用。

###总结##   文章讲的不是很细,更多内容需要动手体验。希望大家善于利用 shell 命令,它所带来的高效会出乎你的意料。每天一个 Linux 命令,不见不散。

ctags linux,ctags --- 每天一个 Linux 命令相关推荐

  1. linux桌面另一个,linux远程桌面连接另一个linux教程

    我们知道在windows下面我们可以用远程桌面连接来控制其它电脑, 但linux远程桌面连接? 不过在说怎样连接之前还是要先明确一个概念,为什么我标题没有用linux中的远程桌面连接呢, 这是因为Li ...

  2. 删除一个程序Linux,一天一个Linux基础命令删除文件或目录命令rm

    rm删除文件命令 1.命令格式 rm [options]  file... 2.命令功能 rm命令,删除文件命令,是Linux系统下常用命令,该命令的功能为删除一个文件或者整个目录或者目录中的部分文件 ...

  3. atop linux,每天学一个 Linux 命令(117):atop

    命令简介 atop 命令是一款监控 Linux 系统资源与进程的工具,非内部命令,需要安装.[root@centos7 ~]# atop -bash: atop: command not found ...

  4. linux监听一个端口命令,linux监听端口命令

    在linux系统下,我们可以通过相关的命令监听端口的状态.下面由学习啦小编为大家整理了linux监听端口命令的相关知识,希望对大家有所帮助. 一.linux监听端口命令--nc命令详解 语法 nc [ ...

  5. sugar linux桌面,Sugar一个Linux的Distro和学习平台为孩子们 | MOS86

    作为全球努力,为每个孩子提供平等的机会进行优质教育,SugarLabs创建了一个糖学习平台,鼓励儿童的批判性思维和协作学习.它首先作为各种Linux发行版的桌面环境存在,但现在已经成为可以直接从U盘运 ...

  6. linux进程授权,一个linux小程序的免授权或通用授权

    本帖最后由 PM926 于 2020-3-10 13:02 编辑 一个执行json配置的一个守护程序,纯粹是便利而使用,不是商业软件,程序是cpu加网卡绑定授权的,可能是TMD保护.执行前先验证当前目 ...

  7. 每天一个linux命令(35):ln 命令

    一.ln命令解释 ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同 ...

  8. 每天一个linux命令(1):ln 命令

    每天一个linux命令(35):ln 命令 ln 是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在 每一 ...

  9. 每天一个linux命令(5):in命令

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在 ...

  10. 每天一个linux命令:ln 命令

    http://www.cnblogs.com/peida/archive/2012/12/11/2812294.html ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立 ...

最新文章

  1. 吴恩达深度学习笔记(105)-人脸识别之面部验证与二分类
  2. 基数估算HyperLogLog
  3. SharePoint 2013 Disaster Recovery——迁移内容数据库
  4. VS调试查看寄存器学习总结
  5. WIndows下AppAche服务中调试php页面出现警告:Call to undefined function mysql_connect()
  6. python自定义全局异常_flask中主动抛出异常及统一异常处理代码示例
  7. 【DevOps+LIVE】直播复盘 – DevOps能力成长模型2018首发
  8. C语言申请内存时堆栈大小限制
  9. mysql event 简单demo
  10. Node.js进程管理之Process模块
  11. uni app map 地图 漂浮问题及方案
  12. 读四年大学,各项费用大概是多少?
  13. 面试问sql优化_您想了解的有关SQL Saturday的所有信息(但不敢问)
  14. 别问,问就是我差点在所有浏览器中注入 JavaScript 代码
  15. 瀑布流JavaScript
  16. Qt+STK项目配置
  17. 贝叶斯因果网络_因果关系和贝叶斯网络
  18. 深入分析Java中的length和length()
  19. MyBatis 游标查询大量数据
  20. centos压缩包安装mysql_Centos安装Mysql压缩包方式

热门文章

  1. python实现逻辑回归牛顿法求参数_教程 | 如何通过牛顿法解决Logistic回归问题
  2. mysql 行显示 g_MySQL行(记录)详细操作
  3. Effective_STL 学习笔记(十六) 如何将 vector 和 string 的数据传给遗留的API
  4. SpringMVC环境搭建——HelloWorld
  5. 远程登录服务器时,提示未被授予终端服务器登录权限?
  6. Maven入门指南12:将项目发布到私服
  7. 【故障处理】一次RAC故障处理过程
  8. http协议(九)响应首部字段
  9. 关于新建android项目时 appcompat_v7报错问题的一点总结
  10. 【UIKit】UITableView 5