博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ctags --- 每天一个 Linux 命令
阅读量:6294 次
发布时间:2019-06-22

本文共 2100 字,大约阅读时间需要 7 分钟。

hot3.png

###简介##   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# lsarch     Documentation  init    MAINTAINERS  REPORTING-BUGS  tagsblock    drivers        ipc     Makefile     samples         toolsCOPYING  firmware       Kbuild  mm           scripts         usrCREDITS  fs             kernel  net          security        virtcrypto   include        lib     README       sound

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

  在 vim 文件切换底行模式,输入 : cstag 关键字   Tags文件中包括这些对象的列表:用 #define 定义的宏枚举型变量的值函数的定义、原型和声明名字空间(namespace)类型定义(typedefs)变量(包括定义和声明)类(class)、结构(struct)、枚举类型(enum)和联合(union)类、结构和联合中成员变量或函数 vim 用这个 “tags” 文件来定位上面这些做了标记的对象。
  (1) ctrl + } :连续查找关键字 要先将光标移动到关键字处
  (2) ctrl + T : 返回上一次查找关键字
  (3) 查找时出现多页关键字处理:两次 ESC 进入选择界面
tags 文件内容截图

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 命令,不见不散。

转载于:https://my.oschina.net/finefine/blog/316060

你可能感兴趣的文章
java jvm GC 各个区内存参数设置
查看>>
[使用帮助] PHPCMS V9内容模块PC标签调用说明
查看>>
基于RBAC权限管理
查看>>
数学公式的英语读法
查看>>
留德十年
查看>>
迷人的卡耐基说话术
查看>>
PHP导出table为xls出现乱码解决方法
查看>>
PHP问题 —— 丢失SESSION
查看>>
Java中Object类的equals()和hashCode()方法深入解析
查看>>
数据库
查看>>
dojo.mixin(混合进)、dojo.extend、dojo.declare
查看>>
Python 数据类型
查看>>
iOS--环信集成并修改头像和昵称(需要自己的服务器)
查看>>
PHP版微信权限验证配置,音频文件下载,FFmpeg转码,上传OSS和删除转存服务器本地文件...
查看>>
教程前言 - 回归宣言
查看>>
PHP 7.1是否支持操作符重载?
查看>>
Vue.js 中v-for和v-if一起使用,来判断select中的option为选中项
查看>>
Java中AES加密解密以及签名校验
查看>>
定义内部类 继承 AsyncTask 来实现异步网络请求
查看>>
VC中怎么读取.txt文件
查看>>