Linux 中的vim和gdb

目录

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----跳到至指定行

相关推荐
淮北49412 小时前
vim学习进阶
学习·编辑器·vim
maosheng114612 小时前
RHCSA的第一次作业
linux·运维·服务器
wifi chicken12 小时前
Linux 端口扫描及拓展
linux·端口扫描·网络攻击
旺仔.29112 小时前
Linux 信号详解
linux·运维·网络
放飞梦想C13 小时前
CPU Cache
linux·cache
Hoshino.4113 小时前
基于Linux中的数据库操作——下载与安装(1)
linux·运维·数据库
恒创科技HK14 小时前
通用型云服务器与计算型云服务器:您真正需要哪些配置?
运维·服务器
吴佳浩 Alben14 小时前
GPU 生产环境实践:硬件拓扑、显存管理与完整运维体系
运维·人工智能·pytorch·语言模型·transformer·vllm
播播资源15 小时前
CentOS系统 + 宝塔面板 部署 OpenClaw源码开发版完整教程
linux·运维·centos
源远流长jerry15 小时前
在 Ubuntu 22.04 上配置 Soft-RoCE 并运行 RDMA 测试程序
linux·服务器·网络·tcp/ip·ubuntu·架构·ip