
vim有三种模式,基本模式就是用来输入命令的,比如删除跳转等操作就是在基本模式下面;插入模式不用说;命令模式就是按Esc+:进入的模式,之间的切换很容易我就废话了。下面几乎都在基本模式操作。
基本操作
移动
h,l,j,k 左右下上w,b 移动到下/上一个单词

快速退出
普通模式下输入Shift+zz即可保存退出vim
进入插入模式
i 在当前光标处进行编辑I,A 在行首/末插入

a 在光标后插入编辑
o,O 在当前行后/前插入一个新行cw 删除一个单词,同时进入插入模式

文档编辑
文档编辑的所有命令全部符合一个规律,[操作]+[行号]+定位,三个部分完成一个动作
比如:删除操作代码为d,重复操作代码代表操作当前行,则删除2行就是d2d;
操作和行号也可以互换位置 2dd,可以省略行号dd代表删除一行,多数时候可以不要操作则代表定位 5G代表移动到第五行。
删除
x 反退格键(delete键) X 退格键

dw 删除一个单词(不适用中文)类似于上一节说的cw,只是删除后还在普通模式
d$ 删除至行尾,d^ 删除至行首

dG 删除到文档结尾处 d1G 删至文档首部
小结:
前缀(操作) :d代表删除
中缀:行号
后缀(定位):d代表行,G代表尽头, $代表行尾,^代表行首,w代表单词
重复命令
普通模式下输入dd,删除一行,输入.(小数点)会再次删除一行,除此之外也可以重复其他任意操作

使用dw删除一个单词,然后用.命令重复删除单词操作

游标
游标跳转位置,不过是没有去掉操作后输入的命令。nG(n Shift+g) 游标移动到第 n 行(如果默认没有显示行号,请先进入命令模式,输入:set nu以显示行号)
gg 游标移动到到第一行
G(Shift+g) 到最后一行

G代表尽头, $代表行尾,^代表行首,w代表下一个单词,b上一个单词,e当前单词末尾

f+字母 向后搜索 字母并跳转到第一个匹配的位置F+字母 向前搜索字母并跳转到第一个匹配的位置

复制与粘贴
复制为y,后可以接定位符,yy复制游标所在的整行(3yy表示复制3行)y^复制至行首,或y0。不含光标所在处字符。y$ 复制至行尾。含光标所在处字符。

yw 复制一个单词。y2w 复制两个单词。yG 复制至文本末。y1G 复制至文本开头

使用 p 粘贴
p(小写)代表粘贴至光标后(下)
P(大写)代表粘贴至光标前(上)
剪切
我们上面在删除那学到的d操作,其实就是剪切,我们使用ddp就可以交换上下行。

小结
到这里是不是文档操作可以直接脱离鼠标了!
移动:h,l,j,k,w,b
跳转:G nG f/F+字母
定位:G代表尽头, $代表行尾,^代表行首,w代表下一个单词,b上一个单词,e当前单词末尾
操作:y d p
进阶操作 - 替换、撤销、缩进、查找
替换和撤销(Undo)
替换和Undo命令都是针对普通模式下的操作,这次用到三个字母,r/R,c/C,u/U
r+<待替换字母> 将游标所在的一个字母替换为其他字母(如下#替换成i)
当然了,一个一个替换甚是麻烦,不妨使用R连续替换
R 连续替换,直到按下Esc
cw 删除一个单词,并进入插入模式

C 删除从游标处开始到当前行尾,并进入插入模式

u 撤销一次操作(如下,粘贴了Internet单词三次,按u三次,撤销粘贴操作)

U(大写) 无论当前行修改了多少次,撤销当前行的所有修改

Ctrl+r redo,即撤销undo的操作(如下,删除一个单词,写入123,之后交替u和Ctrl+r,可以观察到重复撤销123输入,再恢复123输入)

快速缩进在编辑代码时极其有用,快速调整代码缩进非常的爽,缩进操作均在普通模式下有效
使用命令进行快速调整缩进操作
>> 整行将向右缩进

<< 整行向左回退

设置缩进字符数
命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数 (可以简写成sw,下面我都用简写)
获取目前的设定值
1 | :set shiftwidth? |

设置缩进为n个字符
1 | :set shiftwidth=n |

输入 ESC 回到普通模式,再次尝试 >> 看缩进量是否变化

调整文本位置
命令行模式下输入:le(left)命令使本行内容靠左
1 | :le |
命令行模式下输入:ce(center)命令使本行内容居中
1 | :ce |
命令行模式下输入:ri(right)命令使本行文本靠右
1 | :ri |

快速查找
普通模式下输入 / 然后键入需要查找的字符串 按回车后就会进行查找。输入n 和 N 可以继续查找。 n是查找下一个内容,N查找上一个内容。

? 与/ 功能相同,只不过?是向上而 / 是向下查找。 :noh退出查找模式

高级查找
普通模式下输入\*寻找游标所在处的单词
普通模式下输入\#同上,但 \#是向前(上)找,\*则是向后(下)找

以上查找n,N 的继续查找命令依然可以用
小结
速记如下:
替换:r+<待替换字母>,R
删除并插入:cw、C
撤销:u、U、ctrl+r
调整文本位置::le、:ce、:ri
查找:\文本、?文本、n、N
高级操作
同时修改多个文件、快速在文件之间切换
编辑多个文档时分屏操作
批量注释多行代码、修改配置、区域复制删除
多文件的编辑
同时编辑两个文件1.txt,2.txt
1 | vim 1.txt 2.txt |
查看同时打开了哪些文件 :ls,其中%a表示正在编辑的文件。

在文件之间切换 :n , :N

直接切换到想要编辑的文件 :b 1.txt

当然了我们为什么跳来跳去,因为这可以完成多个文件之间复制粘贴等组合操作。
分屏
创建分屏
:sp 2.txt 打开新的水平分屏(上下)视窗来编辑2.txt
:vsp 2.txt打开新的垂直分屏(左右)视窗来编辑2.txt

分屏跳转与移动分屏
我先打开了三个文件,1.txt 2.txt 3.txt

现在我分别跳转到各个文件中,删除文件内容。
普通模式下Ctrl+w j移至下面视窗
普通模式下Ctrl+w k 移至上面视窗
普通模式下Ctrl+w h 移至左边视窗
普通模式下Ctrl+w l 移至右边视窗

现在我垂直打开了三个文件,使用以下命令移动视窗,先把文件3从最左边移动到最右边,再移动下最下边
普通模式下Ctrl+w J将当前视窗移至下面
普通模式下Ctrl+w K 将当前视窗移至上面
普通模式下Ctrl+w H 将当前视窗移至左边
普通模式下Ctrl+w L 将当前视窗移至右边

只要位于相应视窗,:q :wq q!退出就可以;wqa或qa!全部退出
可视模式
可视模式分为三种,也是vim的精髓。分别是行,矩形区域选择,字符段落选择。
和鼠标选择类似,进入可视模式加定位符号就可以快速跳转到想选择的范围,选中以后再进行复制,删除等操作。
行选择
行选择 Shift+v(小写) , 整行选取,可以上下移动光标选更多的行,再按一次 Shift+v 就可以取消选取。
如下,进入行选择模式,输入4G,跳转到第四行,d删除所选区域。

矩形区域选择
矩形区域选择Ctrl+v(小写),按区域选取,可以上下左右移动光标选更多的区域,再按一次 Ctrl+v就可以取消选取。
如下:选择所有的行和第一列所在在区域,shift+i进入插入模式,插入#,双击两次esc,批量注释。然后重复选择动作,输入x删除所选区域。

字符选择(段落选择)
字符选择 v(小写),可以移动光标,光标走过的地方就会选取。再次按下v后就会取消选取。
如下:v$选中192.168.1.2退一格为了不选中换行符,到第一行粘贴ip再选中不需要的ip删除掉。

可视化模式和定位符结合使用效果最佳!
小结
同时编辑多个文件: vim 1.txt 2.txt, 切换文件 :n 、:N、:b 1.txt
分屏 :sp 2.txt :vsp 2.txt,跳转Ctrl+w h|j|k|l 移动分屏位
置Ctrl+w H|J|K|L
可视模式 Shift+v、Ctrl+v、v
vim命令比较多,这里只列举最有用的,足以应对全部的场景了,记的越多速度越快!
Vim高手,从来不用鼠标
Vim高手,从来不用鼠标2——替换、撤销、缩进、查找
Vim 高级操作一看就会