文章目录
- 一、Linux下编写代码的过程及配套软件
- 二、vim
- 三、vim的模式
- 四、命令模式
- 五、视图模式
- 六、替换模式
- 七、底行模式
- 八、vim原理
- 九、插入模式
- 十、vim配置
一、Linux下编写代码的过程及配套软件
1.在windows中由于图形化界面外壳程序的原因,可以开发出对应的IDE(集成开发环境)
例如vs2022在其中可以写代码,编译代码,形成二进制文件,再进行链接,最后再形成
可执行二进制文件,也可以在vs2022中进行调试,进行构建
2.但是由于Linux中命令行模式外壳程序的原因,无法做出像vs2022一样的IDE,并不能
将开发工具同一集结起来,所以在Linux中开封工具都是独立的
3.Linux中的开发工具
写代码:编辑器 -- vim
编译链接代码:gcc/g++
调试:gdb/cgdb
构建工具:makefile,make,cmake
git
二、vim
1.vim是一款"超级强化记事本",核心功能和记事本一致------编辑纯文本
2.在windows中在记事本中进行文本编辑时,输入abcd1234是输入字符abcd1234,但是
在输入ctrl+c、ctrl+v时,是进行复制拷贝的并不是输入字符,那么ctrl+c、ctrl+v就可以
看作是一条命令,本质上在windows中进行文本编辑时,键盘输入会被解析为文本输入
或者是执行命令,而在执行命令时,会提高效率,那么命令越多是不是效率与越高呢?
是的,因为命令的背后是自动化和批量化,命令越多效率越高
3.vim的创作也遵守这一条准则命令的背后是自动化和批量化,命令越多效率越高,所以
vim就会主要围绕命令去设计
三、vim的模式
1.vim的模式分为命令模式、插入模式、底行模式、视图模式、替换模式
2.因为命令的背后是自动化和批量化,命令越多效率越高,所以vim中最重要的就是命令
模式
3.vim默认处于命令模式
四、命令模式
1.光标控制:
1.1 shift + g = G:光标跳转到文本最后一行的行首
1.2 gg:光标跳转到文本第一行的行首
1.3 n(数字) + shift + g:光标跳转到第n行的行首
1.4上下左右四个方向键可以控制光标上下左右移动
1.5hjkl:可以控制光标上下左右移动
h:向左移动 n + h:向左移动n个字符(从当前光标所在处开始计算)
j:向下移动 n + j:向下移动n个字符**(从当前光标所在处开始计算)**
k:向上移动 n + k:向上移动n个字符**(从当前光标所在处开始计算)**
l:向右移动 n + l:向右移动n个字符**(从当前光标所在处开始计算)**
1.6wb以"单词"为单位进行光标移动
"单词":
(1)字母、数字、下划线视为"单词字符",连续的这类字符会被认为是一个单词
(2)符号(非单词字符)单独或连续出现时,也会被视为一个"符号单词"
w:以"单词"为单位,向右移动
n + w:以"单词"为单位,向右移动n个单词
b:以"单词"为单位,向左移动
n + b:以"单词"单位,向左移动n个单词
2.其余命令:
2.1 yy:赋值当前一行 n + yy:从当前行开始赋值n行
2.2 p:粘贴到当前行的下一行 n + p:从当前行的下一行开始粘贴n次n行
2.3 dd:删除当前行 n + dd:从当前行开始删除n行
2.4 shift + ` = ~:快速进行大小写转换
2.5 r:替换光标所在位置的一个字符 n + r:从当前光标开始向右一共替换n个字符为某个
字符
2.6 shift + r = R:从命令模式转换为替换模式,批量化的内容替换
从替换模式返回命令模式Esc按键
2.7 x:删除当前光标所在位置的一个字符
n + x:从当前光标开始向右删除n个字符
2.8 shift + x = X:以当前光标为锚点删除左边的一个字符
n + shift + x:以当前光标为锚点删除左边的n个字符
x与shift + x形成互补的局面
2.9 u:撤销操作,撤销上一次的命令行为
ctrl + r:对u撤销进行撤销,也就是恢复
因为ctrl + r也是一条命令,所以再使用u就可以撤销掉ctrl + r命令的行为
只要没有退出vim,随时可以进行撤销,但是一旦退出vim就无法进行撤销
五、视图模式
1.ctrl + v进入视图模式,从视图模式返回命令模式Esc案件
2.视图模式作用:可以使用光标控制命令选择区域,然后进行对选择区域的统一文本处理
3.例子:批量化注释和批量化去注释
3.1批量化注释
(1)ctrl + v
(2)hjkl选择区域
(3)shift + i = I
(4)//
(5)Esc
3.2批量化去注释
(1)ctrl + v
(2)hjkl选择区域
(3)d
六、替换模式
1.shift + r = R:从命令模式转换为替换模式,批量化的内容替换
从替换模式返回命令模式Esc按键
2.替换模式时,直接从光标的位置开始输入,光标位置原本的字符会被替换为刚刚新写的
字符
七、底行模式
1.底行模式:进行输入命令,之所以称作底行模式是因为,输入命名和反馈都在这一行
2.shift + ; = :从命令模式进入底行模式,从底行模式返回命令模式使用Esc
3.命令:
3.1 set nu:显示行号 set nonu:关闭行号
3.2 w:保存 w!:强制保存
3.3 q:退出 q!:强制退出
wq!:强制保存退出
3.4 /key + n(搜索命令):
按 Enter 执行搜索
此时Vim会高亮显示所有匹配项,并将光标定位到第一个匹配处
按 n(查找下一个)
在正常模式下按n,Vim会跳转到下一个匹配项如果你在文件末尾,会循环回到文件开头继
续搜索
3.5 !com:直接在第行模式中执行Linux指令,这样可以使得我们在不退出vim的情况下
使用gcc/g++指令编译代码
3.6 %s/dest/src/g:将全局中的所有src替换为dest
3.7 vs 文件名:分屏操作,分屏打开另一个文件,ctrl + ww就可以在不同的屏中进行来回
切换,多文件代码
3.8在命令模式中可以使用shift + zz直接退出vim,shift + zz == wq
3.9当vim退出时,光标在哪里,再次打开vim时,光标就还在哪里
八、vim原理
1.编辑新文件
文件不存在 → Vim 在内存中创建空缓冲区
:w 保存时才会实际创建文件
直接 :q 退出不会创建文件
2. 编辑已存在文件
文件内容加载到内存缓冲区
自动创建 .existing.txt.swp 隐藏交换文件(这里面会实时记录编辑内容)
所有编辑操作都在内存中进行
3. 保存机制
内存内容写入临时文件(如 .existing.txt.1234)
临时文件重命名为原文件名
删除旧的 .swp 文件(正常退出时)
4. 异常退出处理
.swp 文件保留在磁盘
下次使用vim大概该文件时会提示:

R(Recover) - 从 .swp 恢复未保存内容
D(Delete) - 删除 .swp,放弃恢复
Q/Abort - 退出,不操作文件
注意:恢复后 .swp 文件不会自动删除(需手动删除)
九、插入模式
1.由命令模式进入插入模式可以使用a、i、o三种命令
|---------|---------------|---------------|--------------|
| i | insert | 在当前字符前插入 | 光标所在位置之前 |
| a | append | 在当前字符后插入 | 光标所在位置之后 |
| o | open line | 在下方新建一行插入 | 当前行的下方新行 |
十、vim配置
1.vim和ls,mkdir一致都是一种指令一个软件,而我们想要配置vim时就需要在当前用户
的家目录中创建一个临时文件.vimrc,然后再将配置项写入到该隐藏文件当中,因为vim
在启动时会去对应用户的家目录中读取对应的.vimrc配置文件读取其中的配置向作为vim
启动时默认配置,所以对于不同的用户,虽然调用的是同一个路径下的vim,但是由于隐藏
文件.vimrc配置文件中的配置项不同最终所形成的vim也不同,这也符合不同用户用各自所
需要的配置的编辑器