基础操作
启动和退出
| 命令 |
说明 |
vim file.txt |
打开文件 |
vim +n file.txt |
打开文件并跳转到第 n 行 |
vim +/pattern file.txt |
打开文件并搜索 pattern |
:q |
退出(未修改) |
:q! |
强制退出(不保存修改) |
:wq |
保存并退出 |
:x |
保存并退出(同 :wq) |
ZZ |
保存并退出 |
ZQ |
不保存退出 |
模式切换
| 按键 |
说明 |
Esc |
返回普通模式 |
i |
在光标前插入 |
I |
在行首插入 |
a |
在光标后插入 |
A |
在行尾插入 |
o |
在下方新建一行 |
O |
在上方新建一行 |
s |
删除光标字符并进入插入模式 |
S |
删除整行并进入插入模式 |
移动
基础移动
| 按键 |
说明 |
h |
左移 |
j |
下移 |
k |
上移 |
l |
右移 |
w |
移动到下一个单词开头 |
b |
移动到上一个单词开头 |
e |
移动到当前单词结尾 |
0 |
移动到行首 |
^ |
移动到行首第一个非空字符 |
$ |
移动到行尾 |
gg |
移动到文件开头 |
G |
移动到文件结尾 |
:n |
移动到第 n 行 |
屏幕移动
| 按键 |
说明 |
Ctrl+f |
向下翻一页 |
Ctrl+b |
向上翻一页 |
Ctrl+d |
向下翻半页 |
Ctrl+u |
向上翻半页 |
H |
移动到屏幕顶部 |
M |
移动到屏幕中间 |
L |
移动到屏幕底部 |
括号跳转
| 按键 |
说明 |
% |
在匹配的括号间跳转 |
[[ |
移动到上一个函数开头 |
]] |
移动到下一个函数开头 |
编辑
删除
| 按键 |
说明 |
x |
删除光标字符 |
X |
删除光标前字符 |
dw |
删除单词 |
dd |
删除整行 |
d$ |
删除到行尾 |
d0 |
删除到行首 |
dG |
删除到文件结尾 |
dgg |
删除到文件开头 |
复制和粘贴
| 按键 |
说明 |
yw |
复制单词 |
yy |
复制整行 |
y$ |
复制到行尾 |
y0 |
复制到行首 |
p |
在光标后粘贴 |
P |
在光标前粘贴 |
撤销和重做
| 按键 |
说明 |
u |
撤销 |
Ctrl+r |
重做 |
U |
撤销当前行的所有修改 |
搜索和替换
搜索
| 命令 |
说明 |
/pattern |
向下搜索 pattern |
?pattern |
向上搜索 pattern |
n |
下一个匹配 |
N |
上一个匹配 |
* |
搜索光标下的单词 |
# |
向上搜索光标下的单词 |
替换
| 命令 |
说明 |
:s/old/new |
替换当前行第一个匹配 |
:s/old/new/g |
替换当前行所有匹配 |
:%s/old/new/g |
替换文件中所有匹配 |
:%s/old/new/gc |
替换所有匹配(需确认) |
:n,ms/old/new/g |
替换第 n 到 m 行的所有匹配 |
可视模式
进入可视模式
| 按键 |
说明 |
v |
字符可视模式 |
V |
行可视模式 |
Ctrl+v |
块可视模式 |
可视模式操作
| 操作 |
说明 |
d |
删除选中内容 |
y |
复制选中内容 |
u |
转换为小写 |
U |
转换为大写 |
~ |
切换大小写 |
> |
增加缩进 |
< |
减少缩进 |
常用命令
文件操作
| 命令 |
说明 |
:e file.txt |
打开文件 |
:w |
保存文件 |
:w file.txt |
另存为 file.txt |
:r file.txt |
插入 file.txt 内容 |
窗口和标签
| 命令 |
说明 |
:split |
水平分割窗口 |
:vsplit |
垂直分割窗口 |
:close |
关闭当前窗口 |
:tabnew |
新建标签 |
:tabn |
下一个标签 |
:tabp |
上一个标签 |
gt |
下一个标签 |
gT |
上一个标签 |
实用示例
多文件编辑
# 打开多个文件
vim file1.txt file2.txt file3.txt
# 在文件间切换
:n # 下一个文件
:N # 上一个文件
:ls # 列出所有文件
:b1 # 切换到第一个文件
宏录制
# 开始录制宏到寄存器 a
qa
# 执行一些操作(例如删除行、修改文本等)
dd
j
# 停止录制
q
# 执行宏 100 次
100@a
批量注释
# 可视模式选择多行后
:s/^/#/ # 添加注释
:s/^#// # 删除注释
格式化代码
# 格式化整个文件
gg=G
# 格式化当前段落
=ap