目录
[一. vim](#一. vim)
[1.1 什么是 vim](#1.1 什么是 vim)
[1.2 vim 的多模式](#1.2 vim 的多模式)
[1.2.1 命令模式](#1.2.1 命令模式)
[1.2.1.1 命令模式下的光标移动](#1.2.1.1 命令模式下的光标移动)
[1.2.1.2 在命令模式下的编辑](#1.2.1.2 在命令模式下的编辑)
[1.2.1.3 在命令模式下的查找](#1.2.1.3 在命令模式下的查找)
[1.2.2 插入模式\编辑模式](#1.2.2 插入模式\编辑模式)
[1.2.2.1 命令模式进入插入模式的其他方法](#1.2.2.1 命令模式进入插入模式的其他方法)
[1.2.2.2 退出](#1.2.2.2 退出)
[1.2.3 底行模式](#1.2.3 底行模式)
[1.2.3.1 简单命令](#1.2.3.1 简单命令)
[1.2.4 视图模式](#1.2.4 视图模式)
[1.2.4.1 批量化注释](#1.2.4.1 批量化注释)
[1.2.4.2 批量化去注释](#1.2.4.2 批量化去注释)
[1.2.4.3 批量化处理](#1.2.4.3 批量化处理)
[1.2.5 两个实用的技巧](#1.2.5 两个实用的技巧)
[1.2.5.1 vim 文件名 +行号](#1.2.5.1 vim 文件名 +行号)
[1.2.5.2 !](#1.2.5.2 !)
一. vim
1.1 什么是 vim
vim 可以看作是文本编辑器,作用主要就是**编写代码和修改各种文本文件。我们常用的 vscode 其实也算是文本编辑器,只不过 vscode 的功能更加多样,是一个集成开发环境简称IDE,**可以编写代码、编译、调用、运行等等,文本编辑器只是它的一种功能。
1.2 vim 的多模式

vim 的模式有很多,高达十几种,但是最常用的只有三种:
1.2.1 命令模式
vim的命令模式其实就是启用vim时进入的默认模式。
1.2.1.1 命令模式下的光标移动
1.2.1.2 在命令模式下的编辑
- 复制粘贴 :
yy(复制当前行)、yw(复制当前单词)、p(光标后粘贴)、[shift+p](P)(光标前粘贴)、nyy(复制n行,比如 5yy 复制5行)、np(将复制内容粘贴n次)- 删除 :x(删除/剪切光标处字符)、dd(删除/剪切当前行)、
dw(删除当前单词)、ndd(删除/剪切 n 行,比如3dd,删除/剪切3行)、shift+x(删除/剪切光标处左侧字符)、nx(删除n个字符)- 撤销与重做 :u(撤销上一步)、Ctrl+r(重做撤销操作)、
.(重复上一次编辑命令)- 替换 :r(替换光标处单个字符)、shift+r(进入替换模式 ,替换模式和插入模式功能大致一样,只是当光标移动到有字符的位置时,不是插入而是替换)、nr(替换光标处开始的n个字符)
- 切换 :~:(对特定的字符进行大小写切换,光标自动跳跃到该行下一个字符)
1.2.1.3 在命令模式下的查找
在命令模式下,把光标移动到要查找的单词上,按Shift+3(也就是 #),Vim 会自动识别光标所在单词,并向上查找相同单词;之后按 n 可以继续沿向上的方向查找下一个相同单词。
1.2.2 插入模式\编辑模式
当我们想要对文本进行编辑时,就需要进入插入模式,我们只需要**在命令模式下按i即可进入。**当左下角的字变为INSERT时就代表进入了插入模式。

1.2.2.1 命令模式进入插入模式的其他方法
除了输入i,在命令模式下输入a、o也都可以进入插入模式
**i:**光标所处位置不动。
a: 光标往后退一格。
o: 光标往下退一格,并且开辟新行。
1.2.2.2 退出
- 在当前模式下 vim 是不能退出的,你先按ESC退入到默认模式下,然后输入大写的ZZ即可退出。
- 如果我们不想在插入模式退出,我们也可以通过命令在底行模式下退出,首先按下shift+;进入底行模式,在底行命令中w代表保存,q代表退出,wq就是保存并退出。
1.2.3 底行模式
在命令模式下按下shift+;进入底行模式(底行模式回退到命令模式按下ESC即可),我们想设置行号就可以通过底行命令set un完成:

1.2.3.1 简单命令
- 保存退出: 这个我们之前讲过,这里主要提一下:w!(强制保存)、q!(强制退出)、wq!(强制保存并退出)
- 行号: set nu(显示行号)、set nonu(取消行号)
- 能直接回到vim: !command(bash中执行的命令,都可以在底行之间切换)--再按任意键回到vim
- 批量替换: %s/被替换/新内容/g(用新内容替换指定项目)
- 查找:****/要查找的内容、n(下一个)、N(上一个)
- **分屏:**vs 文件名(分屏,用来写文件,光标在那就以哪个文件为主)、ctrl+ww(移到其它文件)
这里提一嘴,vim 未创建的文件名、 vim 下 vs 未创建的文件名都会代开一个新缓冲区,只有保存了才会以此文件名建立新的文件。
1.2.4 视图模式
在命令模式下按下ctrl+v进入视图模式,视图模式回退到命令模式按下ESC即可。
1.2.4.1 批量化注释


1.2.4.2 批量化去注释

1.2.4.3 批量化处理
例如:我要把hallo world里的world全部删除

例如:我又把world重新插入

1.2.5 两个实用的技巧
1.2.5.1 vim 文件名 +行号
意思就是打开文件的同时,光标定位到想要的行号。
bash
vim code.cpp +2

1.2.5.2 !
之前在指令(三)中提到过 ctrl+r 和 上下键 可以快速使用历史指令,这次的指令也是一样;
bash
!vim
#按下回车,找最近一条以vim开头的历史命令
#直接再次执行
#假如我最近执行了指令 vim code.cpp,那么按下回车,直接执行 vim code.cpp