目录
- vim
-
- 命令模式(常用)
-
- n+yy-----复制n次
- n+p------黏贴n次
- u------撤销
- dd-----剪切/删除
- [-----将光标定位到当前行结尾](#-----将光标定位到当前行结尾)
- ^-----将光标定位到最开始。
- gg------将光标定位文本开始
- shift+g-----将光标定位文件尾。
- n+shift+g----将光标定位到第n行
- [上下左右键:h j k l (左下上右) n+hjkl 可以跨越多行](#上下左右键:h j k l (左下上右) n+hjkl 可以跨越多行)
- shift+~----------快速切换大小写
- n+x-----删除光标后续内容
- n+shift+x---删除光标前的内容
- b-------按照单词为单位进行光标前移
- w-------按照单词为单位进行光标后移
- n+r-------对光标指定的位置,进行一个字符的替换
- shift+r------(左下角变成了replace)不删除情况下,对内容覆盖写。
- 底行模式
-
- [set nu/set nonu --------打开/去掉行号![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/76ac451adcae4ecfbc07b440ac45443f.png)](#set nu/set nonu --------打开/去掉行号)
- 退出和保存
- [s///g----------替换 例如:s/printf/PRINT/g](#s///g----------替换 例如:s/printf/PRINT/g)
- /--------查找
- [!+命令------不退出vim进行shell命令是执行 例如:!gcc test.c](#!+命令------不退出vim进行shell命令是执行 例如:!gcc test.c)
- vs+文件名----分屏打开文件,光标在那个文件,就编辑那个文件,文件直接支持内容复制粘贴。
- 光标移动:ctrl+ww
- 插入模式
- 三种模式的关系图
- 批量注释
- vim中常见的问题
- gdb---调试代码
-
- 使用的gdb
-
- [打开gdb-->gdb+ debug的可执行文件。](#打开gdb-->gdb+ debug的可执行文件。)
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----跳到至指定行