Vim 快捷键速查
更新时间:2026-08-25。本文回答一个核心问题:Vim 的模式怎么切换?常用操作按什么键? 从模式理解到多窗口管理,一表速查。
先理解模式:Vim 与普通编辑器的根本区别
Vim 最反直觉也最核心的设计是 模式(mode):同一个按键在不同模式下做不同的事。大部分编辑器的按键是"输入字符",而 Vim 的按键是"命令"。

| 模式 | 进入方式 | 用途 | 退出 |
|---|---|---|---|
| 普通模式 | 启动即默认 | 移动、删除、复制、执行命令 | —(大部分时间停留) |
| 插入模式 | i / a / o | 输入文本(同普通编辑器) | Esc 回到普通模式 |
| 可视模式 | v(字符)/ V(行)/ Ctrl-v(块) | 选中文本后操作 | Esc 或再按 v |
| 命令行模式 | :(命令)/ /(搜索) | 保存退出、搜索替换、执行 Ex 命令 | Enter 执行 / Esc 取消 |
核心心法:普通模式是"家",操作完立刻按 Esc 回去;命令形如"动词 + 对象",例如 dw = 删除到词尾(delete word)、dd = 删整行。
光标移动
| 按键 | 作用 | 按键 | 作用 |
|---|---|---|---|
h j k l | 左 / 下 / 上 / 右 | w / b | 跳到下一个 / 上一个词首 |
0 | 行首(含空格) | e / ge | 词尾(向后 / 向前) |
^ | 行首(首个非空字符) | gg | 文件第一行 |
$ | 行尾 | G | 文件最后一行 |
Ctrl-f / Ctrl-b | 向下 / 向上翻一页 | H / M / L | 屏幕顶部 / 中部 / 底部 |
Ctrl-d / Ctrl-u | 向下 / 向上翻半页 | % | 匹配的括号 ()[]{} 间跳转 |
数字前缀:
3w= 前进 3 个词、5j= 下移 5 行。所有命令都可加数字,这是 Vim 高效的关键。
编辑与删除
| 按键 | 作用 | 按键 | 作用 |
|---|---|---|---|
i / a | 光标前 / 后插入 | x | 删除光标处字符 |
I / A | 行首 / 行尾插入 | dw / de | 删除到词首 / 词尾 |
o / O | 下方 / 上方新建行插入 | dd / d$ | 删整行 / 删到行尾 |
r | 替换单个字符 | cc | 删整行并进入插入模式 |
u / Ctrl-r | 撤销 / 重做 | ~ | 切换大小写 |
删除与复制共享同一套动词:d 删除、y 复制(yank)、c 修改(删除后进插入模式),后接同一组对象:
| 对象 | 删除 | 复制 | 修改 |
|---|---|---|---|
| 整行 | dd | yy | cc |
| 到词尾 | dw | yw | cw |
| 到行尾 | d$ | y$ | c$ |
| 到行首 | d0 | y0 | c0 |
| 括号内 | di( | yi( | ci( |
粘贴:p 在光标后粘贴、P 在光标前粘贴。剪切 = 删除(dd 后 p 即"剪切粘贴")。
搜索与替换
| 按键 / 命令 | 作用 |
|---|---|
/pattern | 向下搜索,n 下一个、N 上一个 |
?pattern | 向上搜索,n / N 方向互换 |
* / # | 搜索光标所在词(向下 / 向上) |
:%s/old/new/g | 全文替换(g = 行内所有,c = 逐个确认) |
:5,10s/old/new/g | 第 5~10 行替换 |
:%s/old/new/gc | 全文替换并逐个确认(推荐,防误伤) |
替换默认只匹配字面文本;加
\v启用 very magic 正则(如:%s/\v(foo|bar)/X/g)。
多文件:buffer / 分屏 / 标签页
| 操作 | buffer | 分屏(split) | 标签页(tab) |
|---|---|---|---|
| 打开 | :e file | :sp file(水平)/ :vsp file(垂直) | :tabnew file |
| 切换 | :bn / :bp,Ctrl-^ 上次 | Ctrl-w + h/j/k/l 跳转 | gt / gT |
| 列表 | :ls | Ctrl-w + = 均分 | :tabs |
| 关闭 | :bd | Ctrl-w + c | :tabclose |
- buffer = 内存中的文件;分屏 = 同一窗口切多块;标签页 = 多个"窗口集合"。三者互补,日常用分屏最多。
- 跨文件复制:
yy到另一个分屏p,或"ayy存到寄存器a再"ap。
常用 Ex 命令速查
| 命令 | 作用 | 命令 | 作用 |
|---|---|---|---|
:w | 保存 | :q | 退出 |
:wq / :x | 保存并退出 | :q! | 不保存强制退出 |
:w! | 强制保存(只读时) | :nohlsearch | 取消高亮 |
:set nu | 显示行号 | :set nonu | 隐藏行号 |
:set paste | 粘贴模式(免自动缩进干扰) | :noh | 临时清除搜索高亮 |
:!cmd | 执行外部命令(如 :!ls) | :r !cmd | 把命令输出读入文档 |
高频操作对比表
| 需求 | Vim 做法 | 普通编辑器做法 | 优劣 |
|---|---|---|---|
| 删整行 | dd | 鼠标选中 + Delete | Vim 快 3~5 倍 |
| 改词 | cw | 双击 + 重输 | Vim 一次到位 |
| 全文替换 | :%s/old/new/g | 查找替换对话框 | Vim 可正则 + 确认 |
| 跳转函数 | /funcname 或 gg | 滚动 | Vim 精确 |
| 多文件对照 | :vsp file + Ctrl-w 切换 | 新开窗口 | Vim 无鼠标 |
一句话总结
Vim 快捷键速查 = 一张模式切换图(普通/插入/可视/命令行)+ "动词 + 对象"的命令语法(d/y/c 复用同一组对象)+ buffer/分屏/标签页多文件管理;所有高频操作都能用左手在键盘上完成,无需鼠标。