[Linux] vim及gdb的使用

Linux工具使用

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
相关推荐
梅见十柒3 分钟前
wsl2中kali linux下的docker使用教程(教程总结)
linux·经验分享·docker·云原生
Koi慢热6 分钟前
路由基础(全)
linux·网络·网络协议·安全
传而习乎16 分钟前
Linux:CentOS 7 解压 7zip 压缩的文件
linux·运维·centos
soulteary18 分钟前
突破内存限制:Mac Mini M2 服务器化实践指南
运维·服务器·redis·macos·arm·pika
我们的五年26 分钟前
【Linux课程学习】:进程程序替换,execl,execv,execlp,execvp,execve,execle,execvpe函数
linux·c++·学习
IT果果日记1 小时前
ubuntu 安装 conda
linux·ubuntu·conda
Python私教1 小时前
ubuntu搭建k8s环境详细教程
linux·ubuntu·kubernetes
羑悻的小杀马特1 小时前
环境变量简介
linux
小陈phd2 小时前
Vscode LinuxC++环境配置
linux·c++·vscode
运维&陈同学2 小时前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列