vi 常用操作

光标移动

h 左
l 右
j 下
k 上
w 移动到下一个单词
b 移动到上一个单词

插入模式

i 在当前光标处进行编辑
I 在行首插入
A 在行末插入
a 在光标后插入编辑
o 在当前行后插入一个新行编辑
O 在当前行前插入一个新行编辑
cw 替换从光标所在位置后到一个单词结尾的字符

删除文本

x 删除光标所在位置的字符
X 删除光标所在的前一个字符
dd 删除整行
dw 删除一个单词
D(d$) 删除至行尾
d^ 删除至行首
dG 删除至文档结尾
d1G 删除到文档开始
dgg 删除到文档开始
d${n}g 删除到指定行

快速跳转

nG 跳转到第n行
gg 跳转到第一行
G 跳转到最后一行
ctrl + o 回到上次光标所在位置

行内跳转

w 到下一个单词的开头
e 到当前单词的结尾
b 到前一个单词的开头
ge 到前一个单词的结尾
0 ^ 到行头
$ 到行尾

剪切、复制、粘贴

y 复制
yy 复制所在行
${n}yy 复制n行
y^ 复制至行首,不含光标所在出的字符
y$ 复制至行尾
yw 复制一个单词
y2w 复制两个单词
yG 复制至文本末
y1G 复制至文本开头(ygg)
p 粘贴至光标后
P 粘贴至光标前

字符的替换及撤销

r+ 将光标所在字母替换为指定字母
R 连续替换,直到按下ESC
cc 替换整行,即删除所在行,并进入编辑模式
cw 替换一个单词,即删除一个单词,并进入插入模式
C 替换光标以后至行末
~ 翻转光标所在字母大小写
u{n} 撤销一次或n次操作
U 撤销当前所有的修改
ctrl+r redo,即撤销undo的操作

查找

输入 / 然后键入要查找的字符串回车后就会进行查找,?/ 功能相同,只不过 ? 是向上查找,/ 是向下查找。进入查找后,输入 n 查找下一个内容,输入 N 查找上一个内容。

* 向下寻找光标所在处的单词
# 向上寻找光标所在处的单词
g* 向下部分匹配查找
g# 向上部分匹配查找

多文件编辑

code shell
vim 1.txt 2.txt

命令行模式下输入 :n 编辑下一个文件,输入 :N 编辑上一个文件。可以添加 ! 表示强制切换,之前文件内的输入没有保存,仅仅是切换文件。

:e 3.txt 打开新文件
:e# 回到前一个文件
:ls 列出当前编辑过的文件
:b 2.txt 可以直接编辑该文件,文件名可以为ls中的编号
:bd 2.txt 删除以前编辑过的列表中的文件项目,文件名可以为ls中的编号
:e! 4.txt 打开新文件,并放弃正在编辑的文件
:f 显示正在编辑的文件名
:f new 将当前编辑的文件另存为

恢复文件

未保存文件强制退出后可以 vim -r 进入文档后,输入 :ewcover 1.txt 来恢复

可视化模式

v 进入字符选择模式,光标走过的地方会被选取,再次输入v会取消选取。
V 进入行选择模式,会选择整行,再次输入V会取消选取。
d 删除选区内容
y 复制选区内容

视窗操作

:new 打开一个新的视窗
:sp 1.x 打开新的水平分视窗,编辑1.x
:vsp 1.x 打开新的水平分视窗,编辑1.x
ctrl+w s 将当前窗口分割成两个水平的窗口
ctrl+w v 将当前窗口分割成两个垂直的窗口
ctrl+w q 等价于:q
ctrl+w o 打开一个视窗并隐藏之前的所有视窗
ctrl+w j 移至下面视窗
ctrl+w k 移至上面视窗
ctrl+w h 移至左边视窗
ctrl+w l 移至右边视窗
ctrl+w J 将视窗移至上面
ctrl+w K 将视窗移至下面
ctrl+w H 将视窗移至左边
ctrl+w L 将视窗移至右边
ctrl+w - 减小视窗的高度
ctrl+w + 增加视窗的高度