当前位置: 首页 > news >正文

[Linux] vim及gdb的使用

Linux工具使用

  • Vim编辑器使用
    • Vim的基本概念
    • vim的基本操作
    • vim正常模式命令集
    • vim底行模式命令集
  • gdb调试器使用
    • 背景
    • 使用

Vim编辑器使用

Vim的基本概念

vim我们所需要掌握的有三种模式,分别是命令模式、插入模式、底行模式。

  • 正常/普通/命令模式
    控制屏幕光标移动,字符、字或行的删除,移动复制某区域段及进入插入模式下,或者到底行模式。
  • 插入模式
    只有在插入模式下,才能做文字输入,按ESC回到命令模式。该模式常用于编辑,是我们最常使用的。
  • 底行模式
    文件保存或退出,文件替换,找字符串,列出行号等操作。在命令模式下,按 shift+:即可进入该模式

vim的基本操作

  • 输入 vim test.c 进入编辑界面,但是刚开始进入是处于命令模式的。
  • 命令模式切换至插入模式
    • 输入a
    • 输入i
    • 输入o
  • 插入模式切换至正常模式
    • 输入ESC
  • 命令模式切换至底行模式
    • 输入 shift+;
  • 退出vim及保存文件,在命令模式下切换至底行模式
    • 输入w(保存当前文件)
    • 输入wq(保存并退出)
    • 输入q!(不保存强制退出)

vim正常模式命令集

  • 插入模式
    • 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
    • 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
    • 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
  • 从插入模式切换为命令模式
    • 按「ESC」键。
  • 移动光标
    • vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格
    • 按「G」:移动到文章的最后
    • 按「 $ 」:移动到光标所在行的“行尾”
    • 按「^」:移动到光标所在行的“行首”
    • 按「w」:光标跳到下个字的开头
    • 按「e」:光标跳到下个字的字尾
    • 按「b」:光标回到上个字的开头
    • 按「#l」:光标移到该行的第#个位置,如:5l,56l
    • 按[gg]:进入到文本开始
    • 按[shift+g]:进入文本末端
    • 按「ctrl」+「b」:屏幕往“后”移动一页
    • 按「ctrl」+「f」:屏幕往“前”移动一页
    • 按「ctrl」+「u」:屏幕往“后”移动半页
    • 按「ctrl」+「d」:屏幕往“前”移动半页
  • 删除文字
    • 「x」:每按一次,删除光标所在位置的一个字符
    • 「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
    • 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
    • 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
    • 「dd」:删除光标所在行
    • 「#dd」:从光标所在行开始删除#行
  • 复制
    • 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
    • 「#yw」:复制#个字到缓冲区
    • 「yy」:复制光标所在行到缓冲区。
    • 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
    • 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
  • 替换
    • 「r」:替换光标所在处的字符。
    • 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
  • 撤销上一次操作
    • 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次恢复。
    • 「ctrl + r」: 撤销的恢复
  • 更改
    • 「cw」:更改光标所在处的字到字尾处
    • 「c#w」:例如,「c3w」表示更改3个字
  • 跳至指定的行
    • 「ctrl」+「g」列出光标所在行的行号。
    • 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

vim底行模式命令集

在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。

  • 列出行号

    • 「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。
  • 跳到文件中的某一行

    • 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
  • 查找字符

    • 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
    • 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
  • 保存文件

    • 「w」: 在冒号输入字母「w」就可以将文件保存起来
  • 离开vim

    • 「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。
    • 「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件

gdb调试器使用

背景

  • 程序的发布方式有两种,debug模式和release模式
  • Linux gcc/g++出来的二进制程序,默认是release模式
  • 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

使用

退出:quit

调试命令:

  • /l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
  • list/l 函数名:列出某个函数的源代码。
  • r或run:运行程序。
  • n 或 next:单条执行。
  • s或step:进入函数调用
  • break(b) 行号:在某一行设置断点
  • break 函数名:在某个函数开头设置断点
  • info break :查看断点信息。
  • finish:执行到当前函数返回,然后挺下来等待命令
  • print§:打印表达式的值,通过表达式可以修改变量的值或者调用函数
  • p 变量:打印变量值。
  • set var:修改变量的值
  • continue(或c):从当前位置开始连续而非单步执行程序
  • run(或r):从开始连续而非单步执行程序
  • delete breakpoints:删除所有断点
  • delete breakpoints n:删除序号为n的断点
  • disable breakpoints:禁用断点
  • enable breakpoints:启用断点
  • info(或i) breakpoints:参看当前设置了哪些断点
  • display 变量名:跟踪查看一个变量,每次停下来都显示它的值
  • undisplay:取消对先前设置的那些变量的跟踪
  • until X行号:跳至X行
  • breaktrace(或bt):查看各级函数调用及参数
  • info(i) locals:查看当前栈帧局部变量的值
  • quit:退出gdb

相关文章:

[Linux] vim及gdb的使用

Linux工具使用 Vim编辑器使用Vim的基本概念vim的基本操作vim正常模式命令集vim底行模式命令集 gdb调试器使用背景使用 Vim编辑器使用 Vim的基本概念 vim我们所需要掌握的有三种模式,分别是命令模式、插入模式、底行模式。 正常/普通/命令模式 控制屏幕光标移动&a…...

Android WebView访问网页+自动播放视频+自动全屏+切换横屏

一、引言 近期,我发现电视家、火星直播等在线看电视直播的软件都已倒闭,而我奶奶也再无法通过这些平台看电视了。她已六十多岁,快七十岁啦。这些平台的倒下对我来说其实没有多大的影响,但是对于文化不多的她而言,生活中…...

php PhpSpreadsheet 读取日期变数字问题解决

问题描述: 使用PhpSpreadsheet 读取表格数据,日期格式读取后变成数字,如下图: 解决方案: $cell $sheet->getCell(H . $row)->getValue(); $toTimestamp \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimes…...

前端架构: 脚手架包管理工具之lerna的全流程开发教程

Lerna 1 )文档 Lerna 文档 https://www.npmjs.com/package/lernahttps://lerna.js.org [请直达这个链接] 使用 Lerna 帮助我们做包管理,并不复杂,中间常用的命令并不是很多这里是命令直达:https://lerna.js.org/docs/api-referen…...

[安洵杯 2019]easy_serialize_php1

打开题目 题目源码&#xff1a; <?php$function $_GET[f];function filter($img){$filter_arr array(php,flag,php5,php4,fl1g);$filter /.implode(|,$filter_arr)./i;return preg_replace($filter,,$img); }if($_SESSION){unset($_SESSION); }$_SESSION["user&q…...

【前端素材】推荐优质在线通用果蔬商城电商网页eStore平台模板(附源码)

一、需求分析 1、系统定义 通用果蔬网站是指专门提供各类果蔬产品展示和销售的在线平台。它将不同种类的新鲜水果、蔬菜、干果、坚果等聚集在一起&#xff0c;为消费者提供方便、快捷的购物渠道。 2、功能需求 通用果蔬网站是指专门提供各类果蔬产品展示和销售的在线平台。…...

开源软件的商业模式探析:开放与盈利的平衡

写在开头 开源软件的概念和应用已经成为了现代科技领域中的一个重要组成部分。然而&#xff0c;虽然开源软件的价值和影响力得到了广泛认可&#xff0c;但如何在开放的环境中找到商业盈利的平衡却是一个颇具挑战性的问题。本文将深入探讨开源软件的商业模式&#xff0c;从基本…...

使用全局事件总线实现任意组件间的通讯

本文以vue2中爷孙组件通讯为例&#xff0c;需求是点击孙组件的按钮&#xff0c;实现关闭爷组件的弹窗。 全局事件总线是通过Vue实例的事件系统来实现组件之间的通讯&#xff0c;可以方便地在任何组件中进行事件的触发和监听。 以下是使用全局事件总线实现爷孙组件通讯的步骤&a…...

文件基础和文件fd

文章目录 预备知识C语言的文件接口系统调用文件fd 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转到网站。 预备知识 我们平时说文件就是说文件里…...

3dgs学习(二)—— 3d高斯与协方差矩阵及其几何意义

协方差矩阵与3d高斯 3d高斯与椭球与协方差矩阵 3d高斯&#xff0c;及3维空间内的正态分布。 通过一元正态分布的坐标系图像不难想象&#xff0c;3维空间中的正态分布点集中在一片椭球空间中&#xff0c;各方向长轴取决于各方向正态分布的方差。 而协方差矩阵通过计算多元之…...

ZStack Cube超融合入选IDC《中国超融合基础架构市场评估》报告

近日&#xff0c;IDC发布了《中国超融合基础架构市场评估&#xff0c;2023》。IDC针对中国超融合基础架构市场的发展现状展开了调研&#xff0c;明确了最终用户构建融合型云平台的痛点和难点&#xff0c;阐述了市场中各技术服务提供商的服务方案和优势&#xff0c;并对未来中国…...

每日一题——LeetCode1556.千位分隔符

方法一 个人方法&#xff1a; 把n转为字符串&#xff0c;逆序遍历n&#xff0c;把n的每个元素加入res&#xff0c;每三次加入.&#xff0c;最后将res翻转再转为字符串即为符合题目要求的结果 var thousandSeparator function(n) {nlet res[],lenn.length-1for(let ilen;i>…...

8.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-游戏底层功能对接类GameProc的实现

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;通过逆向分析确定游戏明文接收数据过程 码云地址&#xff08;master 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/titan 码云版本号&#xff1a;bcf7559184863febdcad819e48aa…...

Redis冲冲冲——事务支持,AOF和RDB持久化

目录 引出Redis事务支持&#xff0c;AOF和RDB持久化1、Redis的事务支持2、Redis的持久化 Redis冲冲冲——缓存三兄弟&#xff1a;缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 Redis冲冲冲——事务支持&#xff0c;AOF和RDB持久化 Redis事务支持&#xff0c;AOF和…...

路由菜单路径匹配方法

优化路由菜单路径匹配算法&#xff1a;实现获取整条线路的路径 引言 在前端开发中&#xff0c;路由菜单的路径匹配是一个常见的需求。我们经常需要根据给定的路径&#xff0c;找到对应的菜单项&#xff0c;并获取整条线路的路径。本文将介绍一个优化的路由菜单路径匹配算法&…...

设计模式浅析(九) ·模板方法模式

设计模式浅析(九) 模板方法模式 日常叨逼叨 java设计模式浅析&#xff0c;如果觉得对你有帮助&#xff0c;记得一键三连&#xff0c;谢谢各位观众老爷&#x1f601;&#x1f601; 模板方法模式 概念 模板方法模式&#xff08;Template Method Pattern&#xff09;在Java中是…...

无用工作、UBI与AI

有些隐晦和黑暗的事实无法陈述&#xff0c;因为任何的系统中“无用”的结局都是被无情的抛弃和淘汰&#xff0c;AI监督下的人类结局更是如此。 什么是无用工作&#xff1f; 无用无效工作通常指的是那些看似忙碌但实际上对社会或个人没有实质性贡献的工作。这类工作可能包括以下…...

【监控】grafana图表使用快速上手

目录 1.前言 2.连接 3.图表 4.job和path 5.总结 1.前言 上一篇文章中&#xff0c;我们使用spring actuatorPrometheusgrafana实现了对一个spring boot应用的可视化监控。 【监控】Spring BootPrometheusGrafana实现可视化监控-CSDN博客 其中对grafana只是打开了一下&am…...

Django常用命令

一、新建一个新项目 django-admin startproject project_name二、新建一个app 在Django中的一个app代表一个功能模块。开发者可以将不同功能的模块放在不同的app中, 方便代码的复用。 python manage.py startapp appa_name三、数据迁移(更新数据库) 编写好了Model后&#x…...

【center-loss 中心损失函数】 原理及程序解释(更新中)

文章目录 前言问题引出open-set问题抛出 解决方法softmax函数、softmax-loss函数解决代码&#xff08;center_loss.py&#xff09;原理程序解释 如何梯度更新首先了解一下基本的梯度下降算法然后 前言 学习一下&#xff1a; 中心损失函数&#xff0c;用于用于深度人脸识别的特…...

SQL如何筛选出分组记录数大于N的结果_使用HAVING

WHERE用于分组前过滤行&#xff0c;HAVING用于GROUP BY后筛选分组结果&#xff1b;COUNT(*)等聚合值只能在HAVING中使用&#xff0c;WHERE中不可用&#xff0c;且HAVING必须紧跟GROUP BY。WHERE 不能用在分组后筛选&#xff0c;必须用 HAVINGWHERE 是在分组前过滤行&#xff0c…...

天气的所有状态

这个问题其实没有一个**全球统一“固定数量”**的天气状态标准&#xff0c;不同气象机构&#xff08;比如中国气象局、WMO、METAR航空天气&#xff09;分类都不一样。 但在嵌入式/APP开发里&#xff0c;一般会用一个**“工程上够用 覆盖常见情况”**的分类&#xff0c;大概 20…...

【多模态大模型数据质量控制黄金法则】:20年AI工程总监亲授5大致命缺陷识别与实时拦截方案

第一章&#xff1a;多模态大模型数据质量控制的战略定位与范式演进 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型的数据质量已不再仅是预处理环节的技术性约束&#xff0c;而是决定模型泛化能力、跨模态对齐鲁棒性与社会可信度的核心战略支点。随着图文、音视频…...

从0到1构建121m纯电动汽车Simulink仿真模型,详细步骤与实际操作文档,带您提升建模能...

121m 纯电动汽车Simulink仿真模型建模详细步骤。 通过文档的形式&#xff0c;跟着文档一步一步操作&#xff0c;既可以提高自己的建模能力&#xff0c;又可以对整个建模思路进行借鉴&#xff0c;形成设计能力。 附带模型。 丶刚接触电动汽车仿真那会儿&#xff0c;总被各种专业…...

生成式AI应用架构设计终极 checklist(含AWS/Azure/GCP三云适配模板·限免24小时)

第一章&#xff1a;生成式AI应用架构设计的核心范式与演进趋势 2026奇点智能技术大会(https://ml-summit.org) 生成式AI应用已从单模型调用演进为多层协同的工程化系统&#xff0c;其架构设计正围绕“可组合性、可观测性、可治理性”三大支柱重构。现代架构不再以模型为中心&a…...

64—存款收益最大化计算器:从算法优化到理财实战

1. 为什么你需要一个存款收益最大化计算器&#xff1f; 每次去银行存钱&#xff0c;柜员都会给你一堆选择&#xff1a;1年期、3年期、5年期&#xff0c;还有各种利率组合。你是不是也纠结过到底怎么存才能让20年后的收益最大化&#xff1f;我曾经用Excel表格手动计算各种组合&a…...

戳穿“留洋哲棍”:半桶水的伪理性,狗屁不通的欧陆二道贩子+文化骗子

戳穿“留洋哲棍”&#xff1a;半桶水的伪理性&#xff0c;狗屁不通的欧陆二道贩子文化骗子摘要 一群半桶水的“留洋哲棍”&#xff0c;言必称康德、柏拉图&#xff0c;却不懂其思想精髓&#xff1b;这些神棍&#xff0c;言必称希腊&#xff0c;语必称康德&#xff0c;行必崇欧美…...

DPO微调总让模型‘信心不足’?ICLR 2025这篇论文教你一个SFT阶段的小改动,轻松缓解‘挤压效应’

DPO微调中的‘挤压效应’&#xff1a;SFT阶段的小改动如何提升模型表现 大模型微调过程中&#xff0c;研究人员常常遇到一个令人头疼的现象——模型在DPO&#xff08;直接偏好优化&#xff09;阶段后&#xff0c;生成内容变得保守、单一&#xff0c;甚至丧失了原有的创造力。这…...

Flyby11终极指南:如何轻松实现Windows 11多语言界面设置

Flyby11终极指南&#xff1a;如何轻松实现Windows 11多语言界面设置 【免费下载链接】FlyOOBE Fly through your Windows 11 setup &#x1f41d; 项目地址: https://gitcode.com/gh_mirrors/fl/FlyOOBE Flyby11是一款专业的Windows 11升级助手工具&#xff0c;它提供了…...

智能革命:用League Akari重新定义你的英雄联盟游戏体验

智能革命&#xff1a;用League Akari重新定义你的英雄联盟游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否曾在选人阶段犹豫不决…...