Linux 中的vim和gdb

目录

  • vim
    • 命令模式(常用)
      • n+yy-----复制n次
      • n+p------黏贴n次
      • u------撤销
      • dd-----剪切/删除
      • $-----将光标定位到当前行结尾
      • ^-----将光标定位到最开始。
      • gg------将光标定位文本开始
      • shift+g-----将光标定位文件尾。
      • n+shift+g----将光标定位到第n行
      • 上下左右键:h j k l (左下上右) n+hjkl 可以跨越多行
      • shift+~----------快速切换大小写
      • n+x-----删除光标后续内容
      • n+shift+x---删除光标前的内容
      • b-------按照单词为单位进行光标前移
      • w-------按照单词为单位进行光标后移
      • n+r-------对光标指定的位置,进行一个字符的替换
      • shift+r------(左下角变成了replace)不删除情况下,对内容覆盖写。
    • 底行模式
      • set nu/set nonu --------打开/去掉行号![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/76ac451adcae4ecfbc07b440ac45443f.png)
      • 退出和保存
      • s///g----------替换 例如:s/printf/PRINT/g
      • /--------查找
      • !+命令------不退出vim进行shell命令是执行 例如:!gcc test.c
      • vs+文件名----分屏打开文件,光标在那个文件,就编辑那个文件,文件直接支持内容复制粘贴。
      • 光标移动:ctrl+ww
    • 插入模式
    • 三种模式的关系图
    • 批量注释
    • vim中常见的问题
      • (1).退出vim一定要q/wq
      • (2).sudo权限无法使用情况(云服务器问题)
  • gdb---调试代码
    • 使用的gdb
      • 打开gdb-->gdb+ debug的可执行文件。

vim

在我们是用Linux的时候,不仅仅是对文件/目录的操作,我们最终的目的是编写代码,那么就需要编辑器和编译器的存在,我们都是编译器gcc/g++都是我们常见的编译器,那么编辑器呢?今天我们就要学习编辑器vim和vim中的指令

命令模式(常用)

当我们用vim打开一个文件时,默认打开vim是命令模式,允许使用者通过命令来进行文本的编辑控制。

n+yy-----复制n次

含义:yy表示复制光标所在行的数据,n +yy表示复制光标一下n行数据。
在这里插入图片描述

n+p------黏贴n次

在光标位置的下一行位置,粘贴复制内容。n+p可以做到黏贴多行。
在这里插入图片描述

u------撤销

撤销上一次操作。
在这里插入图片描述

dd-----剪切/删除

当他作为剪切的时候,他会把剪切内存保存在剪切板,只需要p就可以了,如果你不需要光标所在行的数据,直接dd删除即可。
在这里插入图片描述

$-----将光标定位到当前行结尾

在这里插入图片描述

^-----将光标定位到最开始。

在这里插入图片描述

gg------将光标定位文本开始

在这里插入图片描述

shift+g-----将光标定位文件尾。

在这里插入图片描述

n+shift+g----将光标定位到第n行

上下左右键:h j k l (左下上右) n+hjkl 可以跨越多行

我们现在的键盘上有上下左右键,但是在过去是通过hjkl来表示左下上右的,所以我们更推荐使用hjkl来控制位置。

shift+~----------快速切换大小写

我们书写代码的时候总会有大小写忘记切换问题,当我们已经书写很多代码时,可以使用这个方法快速切换大小写。长按就可以切换整行。
在这里插入图片描述
在这里插入图片描述

n+x-----删除光标后续内容

在这里插入图片描述

n+shift+x—删除光标前的内容

在这里插入图片描述

b-------按照单词为单位进行光标前移

在这里插入图片描述

w-------按照单词为单位进行光标后移

在这里插入图片描述

n+r-------对光标指定的位置,进行一个字符的替换

n+r可以对n个字符换成同一个。当你是按下r(替换)时,右下角会显示一个小r
在这里插入图片描述

shift+r------(左下角变成了replace)不删除情况下,对内容覆盖写。

在这里插入图片描述

底行模式

底行模式是vim与shell进行交互的,包括但不限于shell。进入底行模式的方法:shift+;(冒号)。从底行模式回到命令模式------esc

set nu/set nonu --------打开/去掉行号在这里插入图片描述

退出和保存

①.wq-----保存退出
②.w------保存
③.wq!-------保存且强制退出
④.q----------只退出

s///g----------替换 例如:s/printf/PRINT/g

在这里插入图片描述

/--------查找

在这里插入图片描述

!+命令------不退出vim进行shell命令是执行 例如:!gcc test.c

vs+文件名----分屏打开文件,光标在那个文件,就编辑那个文件,文件直接支持内容复制粘贴。

在这里插入图片描述

光标移动:ctrl+ww

在这里插入图片描述

插入模式

插入模式就是编辑模式。i/a/o都可以进入插入模式,只不过o会新起一行

三种模式的关系图

在这里插入图片描述

批量注释

步骤:①ctrl+v ② n +hjkl ③ shift+i ④ // 两下esc-----批量化注释n行
ctrl+v hjkl选择区域 l两下包含// d----------去注释

vim中常见的问题

(1).退出vim一定要q/wq

我们经常使用的windows使用ctrl+z退出,但是在Linux中是禁止!因为你ctrl+z退出后,只是让文件处于暂停情况,并是退出!
解决方案:1.ps ajx |grep vim 2.kill -9 + 你vim的程序杀掉 3.将 .swp文件删除(注:.swp文件是隐藏文件,需要ls -al查看)

(2).sudo权限无法使用情况(云服务器问题)

白名单:/etc/sudoers
在白名单里添加用户即可。

gdb—调试代码

在我们使用的vs中我们可以进入debug模式来调试代码,那么vim可以吗?只要通过gdb即可。注:Linux默认是release。并且debug文件会比release文件要大,因为debug文件中包含很多调试信息。

使用的gdb

打开gdb–>gdb+ debug的可执行文件。

生成debug文件:gcc -g -o test.exe test.c
一定要有-g 选项,才可以生成debug文件。
①.list------查看源代码
在这里插入图片描述

②.l+文件名+:+行号----从第几行开始查(默认打印十行)
在这里插入图片描述

③.list+你要查的内容----会显示你要查的内容的上下行
④.r----跑程序
在这里插入图片描述

⑤.b+文件名+:+行号----给某行打断点
在这里插入图片描述

⑥.info b-----------查询断点
在这里插入图片描述

⑦.d+Num---------去掉断点 断点编号是线性增长的。
在这里插入图片描述

⑧.quit ----退出gbd
⑨.disable+Num—禁用断点 enable+Num—开启断点
在这里插入图片描述

⑩.gdb对于空行不能调试即使有断点。
⑪next/n—逐过程

⑫step/s------进入函数内部
⑬print/p-------查看变量内容和地址 display+变量名-----常显示变量的变化

⑭undisplay+number编号------去掉常显示
⑮continue/c------运行至下一断点出。打好断点,范围查找,断点的本质按范围去找,二分寻找。
⑯finish----运行结束所在函数,就停下
⑰until+12----跳到至指定行

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

故障诊断 | 一文解决,CNN-BiLSTM卷积神经网络-双向长短期记忆神经网络组合模型的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | 一文解决,CNN-BiLSTM卷积神经网络-双向长短期记忆神经网络组合模型的故障诊断(Matlab) 模型描述 CNN-BiLSTM卷积神经网络-双向长短期记忆神经网络组合模型是一种深度学习模型,结合了卷积神经网络(CNN)和双向长短期记忆网络(BiLSTM)的优点…

【Linux】详谈命令行参数环境变量

目录 一、浅谈命令行参数 二、环境变量 2.1环境变量的内涵以及理解 2.2PATH环境变量: 2.3输入程序名就能运行我们的程序 2.4系统中的环境变量 2.5导出环境变量 三、main函数的第三个参数 3.1获得环境变量的三种方法 四、本地变量 一、浅谈命令行参数 我们的m…

ubuntu arm qt 读取execl xls表格数据

一,ubuntu linux pc编译读取xls的库 1,安装libxls(读取xls文件 电脑版) 确保你已经安装了基本的编译工具,如gcc和make。如果没有安装,可以使用以下命令安装: sudo apt-update sudo apt-get install build-essentia…

C++ vector容器类型

vector类为内置数组提供了一种替代表示&#xff0c;与string类一样 vector 类是随标准 C引入的标准库的一部分 &#xff0c;为了使用vector 我们必须包含相关的头文件 &#xff1a; #include <vector> 使用vector有两种不同的形式&#xff0c;即所谓的数组习惯和 STL习…

基于python+vue超市货品信息管理系统flask-django-php-nodejs

在此基础上&#xff0c;结合现有超市货品信息管理体系的特点&#xff0c;运用新技术&#xff0c;构建了以 python为基础的超市货品信息管理信息化管理体系。首先&#xff0c;以需求为依据&#xff0c;根据需求分析结果进行了系统的设计&#xff0c;并将其划分为管理员和用户二种…

android.os.TransactionTooLargeException解决方案,Kotlin

android.os.TransactionTooLargeException解决方案&#xff0c;Kotlin 首先&#xff0c;特意制造一个让Android发生TransactionTooLargeException的场景&#xff0c;一个Activity启动另外一个Activity&#xff0c;在Intent的Bundle里面塞入一个大的ArrayList: import android.…

鸿蒙一次开发,多端部署(十四)一多开发实例(短信)

本章从系统预置的应用中&#xff0c;选择短信应用作为典型的案例&#xff0c;从页面开发和工程结构的角度&#xff0c;介绍"一多"的具体实践。系统的产品形态在不断丰富中&#xff0c;当前主要有默认设备和平板两种产品形态&#xff0c;本章的具体实践也将围绕这两种…

react基本使用

事件处理 react事件和DOM事件 react事件原生事件onClickonclickonClick{eventListener}οnclick"eventListener()"e.preventDefalutοnclick"javascript" class ListItem extends Component {constructor(props){super(props) //子类中调用父类构造函数}…

STM32---DHT11采集与BH1750FVI光照传感器(HAL库、含源码)

写在前面&#xff1a;本节我们学习使用两个常见的传感器模块&#xff0c;分别为DHT11温湿度传感器以及BH1750FVI光照传感器,这两种传感器在对于环境监测中具有十分重要的作用&#xff0c;因为其使用简单方便&#xff0c;所以经常被用于STM32的项目之中。今天将使用分享给大家&a…

错误centos docker版本过低导致 is not a valid repository/tag: invalid reference format

文章目录 错误centos docker版本过低导致 is not a valid repository/tag: invalid reference format1、查看免费主机刚才下载的docker版本2、卸载旧版本3、安装yum依赖包4、安装镜像信息5、安装docker CE6、查看docker版本7、再次运行就成功了&#xff01;&#xff01;&#x…

科技革新背后:码垛机器人在不同领域的实践应用

随着科技的进步&#xff0c;机器人技术已经渗透到各个行业之中&#xff0c;成为提高生产效率、减少人工成本的重要工具。码垛机器人作为自动化技术的杰出代表&#xff0c;其在各个行业中的应用场景日益广泛&#xff0c;从食品饮料到化工产品&#xff0c;再到物流仓储&#xff0…

【国家计算机二级考试C语言.2024】学习备忘录

说明 分值 4060100 40分&#xff1a; 这里面有一大堆程序结果选这题&#xff0c;如果手速还可以。那遇到有疑问的情况就自己去倒计算器的ad E上面去打一打。能够跑出来&#xff0c;结果那是100%的没问题。 有些概念题比较讨厌&#xff0c;只能自己去记忆了。要去背诵熟熟的。…

取消springboot中的Test类中的日志打印

使用SpringBootTest注解进行单元测试时, 打印东西的时候,总会伴随很多的无关紧要的日志信息&#xff0c;影响观感。去掉这些日志应该怎么做呢 ? 两个步骤: 第一步、修改application.properties logging.level.rootoff logging.level.org.springframeworkoff # 关闭baner信息…

阿猪写作能用吗 #媒体#微信

阿猪写作是一个非常实用的论文写作工具&#xff0c;它不仅能帮助用户快速完成论文写作&#xff0c;还可以提供查重降重的功能&#xff0c;帮助用户确保论文的原创性。在当今社会&#xff0c;论文写作是学术界和科研领域最重要的工作之一&#xff0c;而阿猪写作的出现无疑是给这…

案例实践 | 基于长安链的煤质检测智慧实验室

案例名称-煤质检测智慧实验室 ■ 建设单位 国能数智科技开发&#xff08;北京&#xff09;有限公司 ■ 用户群体 煤炭生产单位、电力单位、化工单位等产业链上下游单位 ■ 应用成效 化验效率提升50%&#xff0c;出验时间缩短40%&#xff0c;提高化验数据市场公信力 案例…

Linux(Centos)安装mysql 8 并且使用systemctl管理服务

1.下载mysql包 地址 MySQL :: Download MySQL Community Server (Archived Versions) 注&#xff1a;下载我圈住的减压之后里面会有tar.gz 再次减压才会是软件主体 2.安装和准备 yum -y install numactl 安装numactl tar -xvf mysql-8.0.30-el7-x86_64.tar 拆分 …

rider下ef core迁移

新建数据库 create database mockstu新建web项目 安装Microsoft.EntityFrameworkCore.SqlServer包 设置连接字符串 新建model using MockStuWeb.Models.EnumTypes; using System.ComponentModel.DataAnnotations;namespace MockStuWeb.Models {/// <summary>/// 学生…

百度文心一言(ERNIE bot)API接入Android应用

百度文心一言&#xff08;ERNIE bot&#xff09;API接入Android应用实践 - 拾一贰叁 - 博客园 (cnblogs.com) Preface: 现在生成式AI越来越强大了&#xff0c;想在android上实现一个对话助手的功能&#xff0c;大概摸索了一下接入百度文心一言API的方法。 与AI助手交换信息的…

分布式搜索引擎-DSL查询文档

分布式搜索引擎-DSL查询文档 文章目录 分布式搜索引擎-DSL查询文档1、DSL Query的分类1.1、全文检索查询1.2、精确查询1.3、地理查询1.4、复合查询1.5、Function Score Query1.6、复合查询Boolean Query 2、搜索结果处理2.1、排序2.2、分页2.3、深度分页2.4、高亮 1、DSL Query…

鸿蒙OpenHarmony开发实战:【MiniCanvas】

介绍 基于OpenHarmony的Cavas组件封装了一版极简操作的MiniCanvas&#xff0c;屏蔽了原有Canvas内部复杂的调用流程&#xff0c;支持一个API就可以实现相应的绘制能力&#xff0c;该库还在继续完善中&#xff0c;也欢迎PR。 使用说明 添加MiniCanvas依赖 在项目entry目录执行…