如何使用vim的插件Ctags查看Linux源码

news2025/1/18 21:01:39

一.ubuntu下安装Linux内核源码

(1).查看自己的内核版本

(2).查看源内的内核源码类表

(3).下载源码

(4).进入/usr/src

(5).解压下载的文件到用户主

二.安装vim插件Ctags和使用

插件的介绍

Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或其它工具用来快速查找定位源代码中的符号(tag/symbol),如变量名,函数名等。比如,tags文件就是Taglist和OmniCppComplete工作的基础。

(1).下载并安装

(2).基本功能使用

1.$ ctags –R * ($ 为Linux系统Shell提示符)

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

3.:ts

(ts 助记字:tags list, “:”开头的命令为VI中命令行模式命令)

4.:tp (tp 助记字:tags preview)

5.:tn (tn 助记字:tags next)

6.Ctrl + ]

7.Ctrl+T

命令解释:

“$ ctags –R *”:“-R”表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录。“*”表示所有文件。这条命令会在当前目录下产生一个“tags”文件,当用户在当前目录中运行vi时,会自动载入此tags文件。

Tags文件中包括这些对象的列表:

1.用#define定义的宏

2.枚举型变量的值

3.函数的定义、原型和声明

4.名字空间(namespace)

5.类型定义(typedefs)

6.变量(包括定义和声明)

7.类(class)、结构(struct)、枚举类型(enum)和联合(union)

8.类、结构和联合中成员变量或函数

VIM用这个“tags”文件来定位上面这些做了标记的对象。

剩下的命令就是定位这些对象的方法:

“$ vi –t tag” :在运行vim的时候加上“-t”参数,例如:

[/usr/src]$ vim -t main

这个命令将打开定义“main”(变量或函数或其它)的文件,并把光标定位到这一行。

如果这个变量或函数有多处定义,在VI命令行模式

“:ts”命令就能列出一个列表供用户选择。

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

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

方便的方法是把光标移到变量名或函数名上,然后按下“Ctrl+]”,这样就能直接跳到这个变量或函数定义的源文件中,并把光标定位到这一行。用“Ctrl+t”可以退回原来的地方。即使用户使用了N次“Ctrl+]”查找了N个变量,按N次“Ctrl+t”也能回到初打开的文件,它会按原路返回 。

更多功能通过命令man ctags或在Vim命令行下运行help ctags查询。

查看函数strlen的步骤如下:

(1).给当前文件夹及其及其子目录创建tags标记文件.

(2).使用vim打开标记文件

(3).使用ts显示该函数的列表

(4).按space出现下面界面

(5).找到lib/*.c,输入编号

(6).显示源码

(7).查看变量的定义,光标放在变量上,按ctrl+] ,ctrl+o/t回来

(8).打开/etc/vim/vimrc文件

(9).在低端添加set tags=tags;/

在当前路径下未找到tags文件,去上级路径以及上上路径去查找

对嵌入式物联网感兴趣的小伙伴,可以多了解一下相关信息。(看过来)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/434998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年的深度学习入门指南(4) - 在你的电脑上运行大模型

2023年的深度学习入门指南(4) - 在你的电脑上运行大模型 上一篇我们介绍了大模型的基础,自注意力机制以及其实现Transformer模块。因为Transformer被PyTorch和TensorFlow等框架所支持,所以我们只要能够配置好框架的GPU或者其他加速硬件的支持&#xff0…

同为科技(TOWE)防雷科普篇1—雷电灾害认识与雷电预警信号解读

前 言 雷电是自然界最为壮观的大气现象之一。其强大的电流、炙热的高温、猛烈的冲击波以及强烈的电磁辐射等物理效应能够在瞬间产生巨大的破坏作用,常常导致人员伤亡,击毁建筑物、供配电系统、通信设备,造成计算机信息系统中断,引…

电风扇出口欧美CE/UL507认证办理

电风扇简称电扇,是一种利用电动机驱动扇叶旋转,来达到使空气加速流通的家用电器,主要用于清凉解暑和流通空气。风扇主要由扇头、叶片、网罩和控制装置等部件组成。电风扇的主要部件是:交流电动机。其工作原理是:通电线圈在磁场中受力而转动。…

Streamlit 中函数多次进入的问题

Streamlit 函数多次进入的问题 Streamlit 学习的背景重要案例心得踩坑或注意点 Streamlit 学习的背景 最近在学习ai相关的知识,同时需要做一些方便使用的web网页。 例如:调用chatGPT的api,做对话窗。 之前用过gradio, 但是发现在手机端上&am…

NestJS:理解ORM(Object Relational Mapping)

一、理解ORM(Object Relation Mapping) ORM是对象—关系映射(Object/Relation Mapping,ORM)是为了解决面向对象与关系数据库存在的互不匹配现象而产生的技术。业务实体在内存中表现为对象,在数据库中表现为关系数据。ORM通过使用描…

【网络技术】HULK攻击实验

一、重要声明 请勿攻击公网!请勿攻击公网!请勿攻击公网! 一切责任自负!一切责任自负!一切责任自负! 二、工具介绍 HULK(Http Unbearable Load King,字面意思是“不能承受的HTTP&a…

项目三:双人骰子

项目三:双人骰子 文章目录 项目三:双人骰子一、导入(5分钟)学习目的 二、新授(65分钟)1.预展示结果(5分钟)2.本节课所用的软硬件(5分钟)3.硬件介绍(1分钟)4.图形化块介绍(1分钟)5.单个模块的简单使用(1分钟)6.双人骰子编程逻辑分析(30分钟)7.…

Faster RCNN系列——RoI Pooling与全连接层

在RPN网络中,已经计算过一次类别真值与类别预测值、偏移量真值与偏移量预测值之间的损失值,但这里的类别预测值只包含两类:前景和背景。 RPN网络输出的Proposal作为生成的区域,继续在后续的RoI Pooling和全连接层中进行分类与回归…

企业电子招投标系统源码之电子招投标系统建设的重点和未来趋势

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及…

性能优化3-分帧寻路+寻路任务统一管理

前言 当项目里的地图越来越大,一些性能上的问题开始逐渐出现,比如寻路。玩家在操控角色移动的时候,指引需要实时更新,同时一些npc也需要做移动,容易出现cpu占用率短时间过高,甚至掉帧的情况。 去年底的时候…

ChatGPT,音乐,与数据库

小编君是个不务正业,喜欢搞跨界,干啥啥不成的DBA,大概在十一年前就有个不成熟的妄念,能否用计算机来写音乐? ▌用ChatGPT来搞音乐? 音乐是一个个的音符,按照乐理规则排列的。音符之间是否和谐…

横扫一线大厂面试的高并发笔记到底有多硬核?

处处需要高并发 “为什么Java面试必问高并发?” 这个问题已经让程序员们倍感头疼,尤其是想要跳槽到更大公司的程序员,能否漂亮的回答高并发的问题已经成为求职者是否是一个优秀程序员的评判标准,大厂面试尤为明显。 不得不说&am…

springMvc(二)

一、SSM整合 前面我们已经把 Mybatis 、 Spring 和 SpringMVC 三个框架进行了学习,今天主要的内容就是把这三个 框架整合在一起完成我们的业务功能开发,具体如何来整合,我们一步步来学习。 1.1 流程分析 (1) 创建工程 创建一个Maven的we…

BUUCTF-PWN-ciscn_2019_n_1

1.溢出到shell位置 下载文件 checksec file 发现是64位的 然后 放入ida 查看字符串 发现 cat flag 然后看看 F5反编译 我们发现了system 然后get()函数 我们可以使用栈溢出 我们看看 v1函数的地址 是30h 然后是64位的 所以 基地址是8字节 我们开始查看 system的地址 所以…

Web3 营销:项目方如何使用空投奖励以及激励真实用户

Apr. 2023, Daniel 在GameFi中,举行成功的空投活动是最难做到的事情之一。 虽然今年Arbitrum和Blur的活动再次使空投成为一个热门话题,但通过空投赚取收益造成了一个机器人问题,即空投者使用多个账户来进入游戏系统。 Trading volume on Bl…

【LeetCode】剑指 Offer 61. 扑克牌中的顺子 p298 -- Java Version

题目链接:https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/ 1. 题目介绍(61. 扑克牌中的顺子) 从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身…

活动需求中灵活使用Redis提升生产力

抽奖 一堆用户参与进来,然后随机抽取几个幸运用户给予实物/虚拟的奖品;此时,开发人员就需要写上一个抽奖的算法,来实现幸运用户的抽取;其实我们完全可以利用Redis的集合(Set),就能轻…

汽车CAN、LIN汇总

目录: 一、准备知识 1、什么是CAN 2、汽车网络发展时间轴 3、如何通信 4、CAN总线结构 1)ISO 11898 2)CAN 和 J1850的比较 3)CAN 和 UART的比较 5、关于节点 1)什么是节点 2)节点:报文传…

Jdbc开发结构

一、导入jar包,放置lib目录下,需要的有: (1)alibaba连接池(druid) (2)apache工具类(commons-dbutils&…

网络协议-HTTP入门和基础工具链

Http协议介绍 发明者:蒂姆伯纳斯-李 英国计算机科学家(1955-) 万维网(1990HTTP协议) 世界第一个浏览器 第一个服务端程序 创办MIT人工智能实验室 HTTP协议 超文本传输协议(Hyper Text Trabsfer Prot…