Vim 相关汇总

◇ 基础命令

1
2
3
4
5
6
7
:w          # 保存文件
:q # 退出
:wq # 保存并退出
:q! # 不保存强制退出

Esc # 返回正常模式
h j k l # 左、下、上、右移动光标
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
i           # 编辑模式,在当前光标位置前插入
I # 在当前行开头插入

a # 编辑模式,在当前光标位置后插入
A # 在当前行末尾插入

s # 删除光标处的字符,并开启编辑模式
S # 删除当前行,并开启编辑模式
cc # 修改当前行

x # 删除光标处的字符
X # 删除光标前的字符

o # 光标下方插入一个空行,并开启编辑模式 (小写字母 o)
O # 光标上方插入一个空行,并开启编辑模式 (大写字母 O)

v # 选择文本
V # 选择多行

dd # 剪切当前行
yy # 复制当前行
p # 粘贴文本

u # 撤销,多次按 u 即可多次撤销
Ctrl + r # 恢复被撤销的操作
1
2
3
4
5
6
7
8
9
10
11
Ctrl + n    # 自动补全
Ctrl + p # 自动补全

/<text> # 搜索文本
?<text> # 搜索文本
:n # 跳转到下一个匹配项

:s/<old_text>/<new_text> # 所在行第一个匹配的替换
:s/<old_text>/<new_text>/g # 所在行全局替换
:%s/<old_text>/<new_text>/g # 文件全局替换
:n1,n2s/<old_text>/<new_text>/g # 所选行全局替换
1
2
3
4
5
6
7
8
9
d           # 剪切
c # 修改
y # 复制

iw # inner word
ap # a paragraph

diw # 删除当前单词
ci" # 修改引号内的文本
1
2
3
4
5
6
7
8
9
10
11
w           # 以单词移动

0 # 跳转到行开头 (零)
^ # 跳转到行开头第一个不是空格的字符
$ # 跳转到行末尾

gg # 跳转到文件开头
G # 跳转到文件末尾

Ctrl + u # 向上滚动半屏
Ctrl + d # 向下滚动半屏
1
2
<           # 左缩进
> # 右缩进
1
2
3
q           # 开始/停止录制宏
@q # 执行宏
3@q # 执行宏3
1
2
3
4
5
6
7
8
:split      # 分屏
:sp # 分屏

:vsplit # 垂直分屏
:vsp # 垂直分屏

Ctrl + w # 切换分屏焦点
:q # 关闭分屏窗口
1
2
3
4
5
6
7
8
9
# 打开当前目录所有文件,并放入同一个缓冲区列表
vim * -p

gt # 向后切换文件
gT # 向前切换文件
:bp # 切换文件
:bn # 切换文件
:ls # 查看当前打开的文件列表
:qa # 关闭全部文件
1
2
3
4
5
6
7
8
:tabnew    # 创建新标签页
:saveas 1.txt # 保存
:tabnew 1.txt # 创建新标签页

:tabnext # 切换标签页
:tabprev # 切换标签页

:tabclose # 关闭标签页
1
2
3
4
5
6
7
ma          # 创建书签 "a"
'a # 跳转到书签 "a"

:marks # 显示书签列表

:delmarks a # 删除书签 "a"
:delmarks! # 删除全部书签
1
2
Shift + k   # 跳转 man 手册
K # 跳转 man 手册

◇ 操作案例

▷ 在多行前插入字符

首先,进入普通模式 (Esc),移动光标到想要插入符号的第一行。

使用 Shift + V 进入行选择模式,移动光标向下,选择要在其前插入符号的所有行。

按下 : 键,在命令行中输入以下命令,并按下 Enter 键:

1
:s/^/your_symbol/

your_symbol 是要插入的符号。这个命令使用正则表达式 ^ 匹配每行的开头,然后在每行的开头插入指定的符号。

如果要在多行的末尾插入符号,可以将上述命令中的 ^ 改为 $,如下所示:

1
:s/$/your_symbol/

这将在每一行的末尾插入指定的符号。