[Linux] vim及gdb的使用

news/2024/7/21 12:44:35 标签: linux, vim, 运维, 笔记

Linux工具使用

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

Vim编辑器使用

Vim的基本概念

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

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

vim_11">vim的基本操作

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

vim_25">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_72">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

http://www.niftyadmin.cn/n/5402046.html

相关文章

【Linux实践室】Linux初体验

🌈个人主页:聆风吟 🔥系列专栏:Linux实践室、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 🔔Linux 目录结构介绍2.2 🔔Linux …

云原生团队如何实现加量不加价

随着云原生技术的快速发展,越来越多的业务实现了上云,云原生团队在工作量增大的同时也随之变成了所有问题对接的入口,如何承担这个保姆的角色成为了一道难题,故障的定界和问题证据的交接更是让人头疼的问题。在这种情况下需要有工…

centos7 部署harbor镜像仓库

1. 安装docker yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum list docker-ce.x86_64 --showduplicates |sort -r yum install docker-ce-17.09.1.ce -y syste…

重塑计算:ICP 打造无限智能合约云解决方案

作者:Lynn Cadet 编译:TinTinLand 原文:https://www.hostingadvice.com/blog/internet-computer-offers-a-limitless-smart-contract-cloud-solution/ 摘要:与其前身互联网一样,区块链行业寻求引领一个新时代及其经济…

antd vue 日期控件的使用(选年份)

Ant Design Vue-------DatePicker 今天就讲讲Ant Design Vue下的控件----DatePicker 日期选择框 结合项目中的需求,先讲一下选择年份如何使用,需求: (1)将库中存的年份读出到DatePicker控件里面; &…

Doccano 修复 spacy.gold 的bug

引言 最初只是想把Doccano标注的数据集转换成BIO(类似conll2003数据集)的标注格式; 按照PR的修改意见实现了修改,但是本人不建议这么做; 应该随着Doccano的升级,Doccano的导出格式发生了变化,而原来的doccano-transfo…

边缘计算网关的重要作用-天拓四方

随着物联网技术的迅猛发展,数据量的爆炸式增长对数据处理和分析提出了更高的要求。边缘计算网关作为连接物理世界和数字世界的桥梁,正逐渐受到各行业的重视。本文将从行业背景、功能特点以及带来的效益等方面,探讨边缘计算网关在当前及未来的…

推特API(Twitter API)V2 用户关注

前面章节已经介绍使用code换取Token的整个流程了,这里不再重复阐述了,下面我们获取到用户token以后如何帮用户自动关注别人。需要参数关注者的用户ID(token授权用户)以及关注的目标用户ID。用户ID如何获取可以看上一章节获取用户信…