ctags linux,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 *
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 命令相关推荐
- linux桌面另一个,linux远程桌面连接另一个linux教程
我们知道在windows下面我们可以用远程桌面连接来控制其它电脑, 但linux远程桌面连接? 不过在说怎样连接之前还是要先明确一个概念,为什么我标题没有用linux中的远程桌面连接呢, 这是因为Li ...
- 删除一个程序Linux,一天一个Linux基础命令删除文件或目录命令rm
rm删除文件命令 1.命令格式 rm [options] file... 2.命令功能 rm命令,删除文件命令,是Linux系统下常用命令,该命令的功能为删除一个文件或者整个目录或者目录中的部分文件 ...
- atop linux,每天学一个 Linux 命令(117):atop
命令简介 atop 命令是一款监控 Linux 系统资源与进程的工具,非内部命令,需要安装.[root@centos7 ~]# atop -bash: atop: command not found ...
- linux监听一个端口命令,linux监听端口命令
在linux系统下,我们可以通过相关的命令监听端口的状态.下面由学习啦小编为大家整理了linux监听端口命令的相关知识,希望对大家有所帮助. 一.linux监听端口命令--nc命令详解 语法 nc [ ...
- sugar linux桌面,Sugar一个Linux的Distro和学习平台为孩子们 | MOS86
作为全球努力,为每个孩子提供平等的机会进行优质教育,SugarLabs创建了一个糖学习平台,鼓励儿童的批判性思维和协作学习.它首先作为各种Linux发行版的桌面环境存在,但现在已经成为可以直接从U盘运 ...
- linux进程授权,一个linux小程序的免授权或通用授权
本帖最后由 PM926 于 2020-3-10 13:02 编辑 一个执行json配置的一个守护程序,纯粹是便利而使用,不是商业软件,程序是cpu加网卡绑定授权的,可能是TMD保护.执行前先验证当前目 ...
- 每天一个linux命令(35):ln 命令
一.ln命令解释 ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同 ...
- 每天一个linux命令(1):ln 命令
每天一个linux命令(35):ln 命令 ln 是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在 每一 ...
- 每天一个linux命令(5):in命令
ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在 ...
- 每天一个linux命令:ln 命令
http://www.cnblogs.com/peida/archive/2012/12/11/2812294.html ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立 ...
最新文章
- 吴恩达深度学习笔记(105)-人脸识别之面部验证与二分类
- 基数估算HyperLogLog
- SharePoint 2013 Disaster Recovery——迁移内容数据库
- VS调试查看寄存器学习总结
- WIndows下AppAche服务中调试php页面出现警告:Call to undefined function mysql_connect()
- python自定义全局异常_flask中主动抛出异常及统一异常处理代码示例
- 【DevOps+LIVE】直播复盘 – DevOps能力成长模型2018首发
- C语言申请内存时堆栈大小限制
- mysql event 简单demo
- Node.js进程管理之Process模块
- uni app map 地图 漂浮问题及方案
- 读四年大学,各项费用大概是多少?
- 面试问sql优化_您想了解的有关SQL Saturday的所有信息(但不敢问)
- 别问,问就是我差点在所有浏览器中注入 JavaScript 代码
- 瀑布流JavaScript
- Qt+STK项目配置
- 贝叶斯因果网络_因果关系和贝叶斯网络
- 深入分析Java中的length和length()
- MyBatis 游标查询大量数据
- centos压缩包安装mysql_Centos安装Mysql压缩包方式
热门文章
- python实现逻辑回归牛顿法求参数_教程 | 如何通过牛顿法解决Logistic回归问题
- mysql 行显示 g_MySQL行(记录)详细操作
- Effective_STL 学习笔记(十六) 如何将 vector 和 string 的数据传给遗留的API
- SpringMVC环境搭建——HelloWorld
- 远程登录服务器时,提示未被授予终端服务器登录权限?
- Maven入门指南12:将项目发布到私服
- 【故障处理】一次RAC故障处理过程
- http协议(九)响应首部字段
- 关于新建android项目时 appcompat_v7报错问题的一点总结
- 【UIKit】UITableView 5