欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > Linux下vim,cgdb的使用

Linux下vim,cgdb的使用

2025/3/31 12:48:29 来源:https://blog.csdn.net/2401_83456040/article/details/146568161  浏览:    关键词:Linux下vim,cgdb的使用

1. vim编辑器

vim的区别简单点来说,它们都是多模式编辑器,vim的三种模式(有好多模式,这里主要讲解三个常用的),分别是命令模式、插入模式和底行模式。

1.1 正常/普通/命令模式

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到底行模式。

1.2  插入模式

只有在插入模式下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是用的最多的编辑模式。

 1.3 末行模式(底行模式)

⽂件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。

 2. vim的基本操作

 vim test.c

在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面。

2.1 [正常模式]切换⾄[插入模式]

输入a,或者i,或者o。

2.2 [插入模式]切换⾄[正常模式]

目前处于[插入模式],只能输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按⼀下「ESC」键转到[正常模式]再删除文字。(但是一般可以直接删除)。

2.3 [正常模式]切换⾄[末行模式]

shift+; 其实就是输入

2.4 退出文件

退出vim及保存⽂件,要首先进入底行模式下输入:

:w(保存当前文件)

:wq(输入wq,存盘并退出vim)

:q!(输⼊q!,不存盘强制退出vim)

3.vim正常模式的一些命令

3.1 移动光标

h,j,k,l分别表示左,下,上,右移动一格
G移动到文章结尾
$移动到光标所在行的“行尾”
^移动到光标所在行的“行⾸”
w光标跳到下个字的开头
e光标跳到下个字的字尾
b光标回到上个字的开头
*l光标移到该行的第*个位置
gg进入到文本开始
shift+g进入文本末端
ctrl+b屏幕往“后”移动⼀⻚
ctrl+f屏幕往“前”移动⼀⻚
ctrl+u屏幕往“后”移动半⻚
ctrl+d屏幕往“前”移动半⻚

3.2 删除文字

x每按⼀次,删除光标所在位置的⼀个字符
#x表⽰删除光标所在位置的“后⾯(包含⾃⼰在内)”#个字符
X⼤写的X,删除光标所在位置的“前⾯”⼀个字符
#X表⽰删除光标所在位置的“前⾯”#个字符
dd删除光标所在⾏
#dd从光标所在行开始删除#行

3.3 复制

yw将光标所在之处到字尾的字符复制到缓冲区中
#yw复制#个字到缓冲区
yy复制光标所在行到缓冲区。
#yy表⽰拷⻉从光标所在的该⾏“往下数”#行⽂字
p将缓冲区内的字符贴到光标所在位置(也就是说p需要和'y'指令配合使用)

3.4 替换

r替换光标所在处字符
R替换光标所到之处的字符,直到按下「ESC」键为⽌

 3.5 撤销上⼀次操作

u误执⾏⼀个命令,可以⻢上按下u,回到上⼀个操作。按多次“u”可以执行多次回复
ctrl+r撤销的恢复

3.6 更改

cw更改光标所在处的字到字尾处
c#w表⽰更改#个字

3.7 跳到指定的行

ctrl+g列出光标所在行的行号
#G表⽰移动光标至文章的第#行行⾸

4. vim末行模式的一些命令

set nu输入set nu后,会在⽂件中的每⼀行前⾯列出行号
##号表示⼀个数字,在冒号后输入⼀个数字,再按回车键就会跳到该行了
/+关键字先输入 / 键,再输入想寻找的字符,如果第⼀次找的关键字不是想要的,可以⼀直按n后往后寻找到您要的关键字
?+关键字先输入 ? 键,再输入想寻找的字符,如果第⼀次找的关键字不是想要的,可以⼀直按n后往后寻找到您要的关键字
w输入字⺟w就可以将文件保存起来
q按q就是退出,如果⽆法离开vim,可以在q后加⼀个!强制离开vim
wq离开时,wq⼀起使⽤,这样在退出的时候还可以保存文件

 5. 批量化注释和去注释

这里会使用到一个新模式,视图模式( ctrl + v 进入视图模式)

批量化注释:

输入ctrl+v,再通过h,j,k,l移动光标控制要注释的部分,再进入插入模式(shift+i),最后输入//。

批量化去注释:

输入ctrl+v,再通过h,j,k,l移动光标控制要去掉注释的部分,再输入d。

 

6. cgdb的一些常用指令

要使用cgdb调试,必须在源代码⽣成⼆进制程序的时候,加上编译 -g 选项,如果没有添加,程序无法被调试。

gcc test.c -o test -g

如果没有安装cgdb可以通过以下方式安装:

Ubuntu:  sudo apt-get install -y cgdb

Centos:   sudo yum install -y  cgdb

list/l显示源代码,从上次位置开始,每次列出10行
list/l 函数名列出指定函数的源代码
list/l 文件名:行号列出指定⽂件的源代码
r/run从程序开始连续执行
n/next单步执行,不进入函数内部
s/step单步执行,进入函数内部
break/b [文件名:]行号在指定行号设置断点
break/b 函数名在函数开头设置断点
info break/b查看当前所有断点的信息
finish执行到当前函数返回,然后停止
print/p 表达式打印表达式的值
set var 变量=值修改变量的值
continue/c 从当前位置开始连续执行程序
delete/d breakpoints删除所有断点
delete/d breakpoints n删除序号为n的断点
disable breakpoints禁⽤所有断点
enable breakpoints启⽤所有断点
info/i breakpoints查看当前设置的断点列表
display 变量名跟踪显示指定变量的值(每次停止时)
undisplay 编号取消对指定编号的变量的跟踪显示
until  行号执行到第#行
backtrace/bt查看当前执行栈的各级函数调⽤及参数
info/i locals查看当前栈帧的局部变量值
quit退出cgdb调试器

6.1 set var 变量=值 和 watch 变量

set var 变量=值:

这个是用于调试,去查看是否由于该变量引起逻辑错误,可以通这个命令去暂时修改这个变量的值,去观察。

watch 变量:

执行时监视⼀个表达式(如变量)的值。如果监视的表达式在程序运行期间的值发生变化,cgdb会暂停程序的执行,并通知。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词