Linux下的vim和gdb

server/2024/11/18 14:37:19/

vim

vim是编译功能强大,多模式的编译器。实际中vim有很多种模式,但是常用的就三种模式:

1、正常/普通/命令模式(Normal mode)控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到last line mode

2、插入模式(Insert mode)只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式

3、末行模式(last line mode)文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。在命令模式下,shift+:(即:)即可进入该模式。

其中命令模式和插入模式,命令模式和末行模式可以互相切换,但是插入模式和末行模式不能互相切换。

命令模式:常用的命令有:

shift+4=$ 行右

shift+6=^ 行左

w 向按后照单词移动

b 向前按照单词移动

shift+g=G 底部

gg 顶部

n+shift+g 跳转光标到指定行,n代表的是行号

h、j、k、l分别代表左下上右移动

yy 复制(nyy:支持对光标所在行,进行多行复制)

p 粘贴(np:支持对内容,进行多行粘贴)

dd 删除光标所在行,(ndd,删除光标所在行及其下面的行共n行)

shift+~ 文本行的大小写切换

shirt+r=R 批量化替换

r 替换光标所在的一个字符,支持nr操作

行内删除:x(删除光标所在位置)和X(shift+x,删除光标的前一个位置),支持nx 或 nX,支持p(粘贴)

u 撤销操作
ctrl+r 取消u操作

插入模式:

1、按[i]进入插入模式后是从光标当前位置开始输入文件;

2、按[a]进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;

3、按[o]进入插入模式后,是插入新的一行,从该行首开始插入。

末行模式:

1、末行可通过!执行Linux命令,例如在末行输入!gcc lcl.c可对gcc进行编译生成可执行程序。

2、可以通过vs命令分屏,展示多个文件,例如:vs copy.c,则会分为两个屏幕,一个展示当前文件,一个展示copy.c,

需要注意的是:光标只有一个,即只能编辑一个文件在同一时间内,切换文件需要在命令模式下按ctr1+ww。

gdb调试:

Linux下gdb调试是通过命令行方式进行的,并且需要注意的是,在Linux中gcc/g++生成的可执行程序是release版本的,不支持调试,所以要生成对应的debug版本才可以gdb。所以,要用gdb调试,首先要进行给编译器添加-g标识以debug方式发布。例如:gcc mytest.c -o mytest -g这样生成的就是debug版本。

有一些重要的命令:

1、打断点:b 行号 形成编号

2、查断点:info b 看到编号

3、去断点:d breakpoint的编号

3、调试运行:r -- run(对应vs中的f5)

4、逐过程:n -- next(对应vs中的f10)

5、逐语句:s -- step(对应vs中的f11)

6、运行至下一个断点处:c -- continue

7、进入函数后,直接运行到将对应函数跑完:finish

8、display/undisplay:常显示(相当于vs中调试时的监视窗口,可以看到对应变量的变化)

9、until x:跳转至x行

下面看图来理解一下:


http://www.ppmy.cn/server/142935.html

相关文章

解决跨域问题

什么是跨域? 跨域指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。跨域只出现在前端,后端不会出现。 怎么解决跨域? 1、使用nginx转发 同源策略只限制于浏览器端的服务…

Spring Boot框架助力电商系统设计

2 相关技术 2.1 SpringBoot框架介绍 Spring Boot是一种不需要代码生成的一种框架,并且可以不需要配置任何的XML文件就可以,因为Spring Boot里面自带了很多接口,只需要配置不同的接口就会自动的应用并且识别需要的依赖,在配置方面非…

LeetCode77. 组合 Java题解

https://leetcode.cn/problems/combinations/ 剪枝&#xff1a;一共需要k个&#xff0c;目前已经有tmp.size个&#xff0c;还需要k-tmp.size个&#xff0c;i最大只能从n-(k-size)1开始。 class Solution {public List<List<Integer>> combine(int n, int k) {Arra…

25-Elasticsearch 数据建模实例

字段类型&#xff1a;Text v.s Keyword ● Text ⽤于全⽂本字段&#xff0c;⽂本会被 Analyzer 分词默认不⽀持聚合分析及排序。需要设置 fielddata 为 true ● Keyword ⽤于 id&#xff0c;枚举及不需要分词的⽂本。例如电话号码&#xff0c;email地址&#xff0c;⼿机号码…

七、利用CSS和多媒体美化页面的习题

题目一&#xff1a; 利用CSS技术&#xff0c;结合表格和列表&#xff0c;制作并美化 “ 翡翠阁 ”页面。运行效果如下 运行效果&#xff1a; 代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>翡翠阁</title>&…

IDEA怎么定位java类所用maven依赖版本及引用位置

在实际开发中&#xff0c;我们可能会遇到需要搞清楚代码所用依赖版本号及引用位置的场景&#xff0c;便于排查问题&#xff0c;怎么通过IDEA实现呢&#xff1f; 可以在IDEA中打开项目&#xff0c;右键点击maven的pom.xml文件&#xff0c;或者在maven窗口下选中项目&#xff0c;…

C#从入门到放弃

C#和.NET的区别 C# C#是一个编程语言 .NET .NET是一个在window下创建程序的框架 .NET框架不仅局限于C#,它还可以支持很多语言 .NET包括了2个组件&#xff0c;一个叫CLR(通用语言运行时)&#xff0c;另一个是用来构建程序的类库 CLR 用C写一个程序&#xff0c;在一台8688的机器…

Web前端开发基础知识--主体内容

1、锚点位置 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>锚点链接</title></head><body><p><a href"yingyong">计算机应用技术</a> <a href"#ruanjian&quo…