Vim 是一款功能强大的文本编辑器,掌握其常用操作能极大提升效率。以下是核心命令速查(注意命令区分大小写):

🔄 模式切换
| 按键 | 功能 |
| Esc | 返回 普通模式(任何模式都可按此键回到普通模式) |
| i | 在光标前进入 插入模式(开始编辑) |
| I | 在行首进入插入模式 |
| a | 在光标后进入插入模式 |
| A | 在行尾进入插入模式 |
| o | 在当前行下方新建一行并进入插入模式 |
| O | 在当前行上方新建一行并进入插入模式 |
| v | 进入 可视模式(字符选择) |
| V | 进入 可视行模式(整行选择) |
| Ctrl+v | 进入 可视块模式(列选择) |
| : | 进入 命令行模式(底部输入命令) |
🚶 光标移动(普通模式)
| 按键 | 功能 |
| h / j / k / l | 左 / 下 / 上 / 右(也可用方向键) |
| w | 跳到下一个单词开头 |
| b | 跳到上一个单词开头 |
| e | 跳到当前单词末尾 |
| 0 | 跳到行首(数字零) |
| ^ | 跳到行首第一个非空字符 |
| $ | 跳到行尾 |
| gg | 跳到文件第一行 |
| G | 跳到文件最后一行 |
| :n 或 nG | 跳到第 n 行(如 :10 跳转到第10行) |
| Ctrl+f / Ctrl+b | 向下 / 向上翻页 |
| % | 跳转到匹配的括号 ()[]{} |
✏️ 编辑操作(普通模式)
删除 / 剪切
| 按键 | 功能 |
| x | 删除光标所在字符 |
| X | 删除光标前一个字符 |
| dd | 删除当前行(剪切) |
| ndd | 删除从当前行起的 n 行(如 5dd 删除5行) |
| dw | 删除从光标到单词末尾 |
| d$ | 删除从光标到行尾 |
| d0 | 删除从光标到行首 |
| dgg | 删除从光标到文件开头 |
| dG | 删除从光标到文件末尾 |
复制(yank)
| 按键 | 功能 |
| yy | 复制当前行 |
| nyy | 复制从当前行起的 n 行 |
| yw | 复制从光标到单词末尾 |
| y$ | 复制从光标到行尾 |
| y0 | 复制从光标到行首 |
粘贴
| 按键 | 功能 |
| p | 在光标后粘贴(行粘贴时在当前行下方) |
| P | 在光标前粘贴(行粘贴时在当前行上方) |
撤销与重做
| 按键 | 功能 |
| u | 撤销上一步操作 |
| Ctrl+r | 重做(撤销的撤销) |
替换与修改
| 按键 | 功能 |
| r | 替换光标处字符(不进入插入模式) |
| R | 进入替换模式(持续覆盖输入) |
| cc | 删除当前行并进入插入模式 |
| cw | 删除从光标到单词末尾并进入插入模式 |
| C | 删除从光标到行尾并进入插入模式 |
| s | 删除光标处字符并进入插入模式 |
| S | 删除当前行并进入插入模式 |
🔍 搜索与替换
| 按键 / 命令 | 功能 |
| /pattern | 向下搜索 pattern |
| ?pattern | 向上搜索 pattern |
| n | 跳转到下一个匹配 |
| N | 跳转到上一个匹配 |
| :s/old/new | 替换当前行第一个 old 为 new |
| :s/old/new/g | 替换当前行所有 old 为 new |
| :%s/old/new/g | 替换整个文件所有 old 为 new |
| :%s/old/new/gc | 替换整个文件,每次询问确认 |
| :n1,n2s/old/new/g | 替换第 n1 到 n2 行之间的所有 old |
💾 保存与退出
| 命令(命令行模式) | 功能 |
| :w | 保存文件 |
| :w filename | 另存为 filename |
| :q | 退出(未修改时) |
| :q! | 强制退出(不保存修改) |
| :wq 或 😡 或 ZZ | 保存并退出 |
| :e! | 放弃所有修改,重新加载文件 |
🧩 多文件与分屏
| 命令 | 功能 |
| :e filename | 在当前窗口打开另一个文件 |
| :split 或 :sp | 水平分屏 |
| :vsplit 或 :vsp | 垂直分屏 |
| Ctrl+w w | 在分屏之间切换 |
| Ctrl+w h/j/k/l | 切换到左/下/上/右分屏 |
| :q / :wq | 关闭当前分屏 |
| :only | 只保留当前分屏,关闭其他 |
🔧 其他实用技巧
- 显示行号::set number(或 :set nu),取消::set nonumber
- 高亮搜索::set hlsearch,取消::set nohlsearch
- 忽略大小写搜索::set ic(ignorecase)
- 显示当前文件名与状态:Ctrl+g
- 重复上次命令:.(点命令,重复上次的修改操作) 3y4.net
- 录制宏:qa 开始录制到寄存器 a,操作后按 q 结束,@a 执行宏,@@ 重复上次宏
- 在终端输入 vimtutor 可启动官方交互教程(约30分钟),是新手最佳入门方式。
- 常用命令不必死记,实践几次即可形成肌肉记忆。
其他操作
“全选”所有文本
ggVG
操作拆解(按顺序依次按下):
-
gg:跳转到文件的第一行。 -
V:进入 行可视模式(Visual Line mode)。 -
G:跳转到文件的最后一行。
此时,从第一行到最后一行会被全部高亮选中,即完成“全选”。
🔥 全选后的常用搭配
全选后光标停留在末尾,你可以接着输入以下指令进行快速操作:
| 操作目的 | 按键 | 说明 |
|---|---|---|
| 全选并复制 | ggVGy | 先全选(ggVG),再复制(y)。 |
| 全选并剪切/删除 | ggVGd 或 ggVGx | 删除所有行。 |
| 全选并复制到系统剪贴板 | ggVG"+y | 复制到系统剪切板(Windows/Linux),在 Mac 中通常用 "*y。 |
| 全选并替换(所有行) | ggVG + : | 全选后按 :,Vim 会自动输入 '<,'> 范围,代表针对高亮选区执行命令(如 :'<,'>s/旧/新/g)。 |
🚀 更快捷的备选方案(无需高亮)
如果你的目的仅仅是复制整个文件内容(不关心界面是否高亮),可以使用命令模式:
:%y
-
%代表整个文件范围,y是复制(yank)。这条命令会直接把所有内容复制到 Vim 内部寄存器,且光标位置不变,比ggVG更高效。
如果需要复制到系统剪贴板:
:%y+
⚠️ 注意区分
-
V(大写):按行选中(最常用)。 -
v(小写):按字符选中(全选需按ggvG,容易漏选,不推荐)。