ctags --- 每天一个 Linux 命令

简介

??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 *

[email protected]:linux-2.6.32.63# ctags -R *
[email protected]: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 进入选择界面

[email protected]: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 命令,不见不散。

时间: 2025-01-23 17:31:39

ctags --- 每天一个 Linux 命令的相关文章

【转载】每天一个Linux命令

每天一个linux命令(1)  : ls 命令 每天一个linux命令(2)  : cd 命令 每天一个linux命令(3)  : pwd 命令 每天一个linux命令(4)  : mkdir 命令 每天一个linux命令(5)  : rm 命令 每天一个linux命令(6)  : rmdir 命令 每天一个linux命令(7)  : mv 命令 每天一个linux命令(8)  : cp 命令 每天一个linux命令(9)  : touch 命令 每天一个linux命令(10): cat 命令

【转】每天一个linux命令(25):linux文件属性详解

原文网址:http://www.cnblogs.com/peida/archive/2012/11/23/2783762.html Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下: 命令: ls -lih 输出: [[email protected] test]# ls -lih 总计 316K 2095120 lrwxrwxrwx 1 root root   11 11-22 06:58 link

每天一个linux命令(8):cp 命令

cp 命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在, 就会询问是否覆盖,不管你是否使用-i参数.但是如果是在shell脚本中执行cp时,没有-i参数时不会询问是否覆盖.这说明命令行和shell脚本的 执行方式有些不同. 1.命令格式: 用法: cp [选项]... [-T] 源 目的 或:cp [选项]... 源... 目录 或:cp [选项]... -t 目录 源... 2.命令功能: 将源文件复

每天一个linux命令目录(转)

转载: http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令.学习的主要参考资料为: 1.<鸟哥的linux私房菜> 2.http://codingstandards.iteye.com/blog/786653 3.linux命令五分钟系列 4.其他互联网资料,google,baidu等搜索引擎 一. 文件目录操作命令: 1.每天一个

每天一个 Linux 命令(20):find命令之exec

find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec  参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠. {}   花括号代表前面find查找出来的文件名. 使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的.在有些操作系统中只允许-ex

每天一个linux命令(20):find命令之exec

find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec  参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠. {}   花括号代表前面find查找出来的文件名. 使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的.在有些操作系统中只允许-ex

每天一个linux命令(25):linux文件属性详解

Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下: 命令: ls -lih 输出: [[email protected] test]# ls -lih 总计 316K 2095120 lrwxrwxrwx 1 root root   11 11-22 06:58 linklog.log -> log2012.log 2095112 -rw-r--r-- 1 root root 296K 11-13 0

[转]每天一个linux命令目录

http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令.学习的主要参考资料为: 1.<鸟哥的linux私房菜> 2.http://codingstandards.iteye.com/blog/786653 3.linux命令五分钟系列 4.其他互联网资料,google,baidu等搜索引擎 一. 文件目录操作命令: 1.每天一个linu

【转】每天一个linux命令目录

原文网址:http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令.学习的主要参考资料为: 1.<鸟哥的linux私房菜> 2.http://codingstandards.iteye.com/blog/786653 3.linux命令五分钟系列 4.其他互联网资料,google,baidu等搜索引擎 一. 文件目录操作命令: 1.每天一