---
title: Vim 常用快捷键速查表 - 提升编辑效率必备
slug: vim-shortcuts-cheatsheet
date: 2026-02-05
author: Frankie 徐
category: other
tags: ['vim', 'neovim', 'editor', 'productivity', 'terminal']
description: Vim 常用快捷键完整速查表，涵盖移动、编辑、搜索、窗口管理等核心操作，帮助你快速掌握 Vim 编辑器，提升代码编写效率。
permalink: https://www.210k.cc/vim-shortcuts-cheatsheet
---

## 为什么要学 Vim

Vim 快捷键记不住是每个初学者的痛点。但一旦掌握，你会发现：

- **无需离开键盘**：双手始终在主键区，编辑效率极高
- **无处不在**：服务器、VS Code、JetBrains IDE 都支持 Vim 模式
- **一次学习，终身受益**：Vim 的设计哲学 40 年不变

这篇文章整理了最常用的快捷键，按使用场景分类，方便查阅。

## 模式切换

Vim 有多种模式，这是它与其他编辑器最大的不同：

| 快捷键 | 说明 |
|--------|------|
| `Esc` | 返回 Normal 模式（最常用） |
| `i` | 在光标前插入（Insert） |
| `a` | 在光标后插入（Append） |
| `I` | 在行首插入 |
| `A` | 在行尾插入 |
| `o` | 在下方新建一行并插入 |
| `O` | 在上方新建一行并插入 |
| `v` | 进入 Visual 模式（字符选择） |
| `V` | 进入 Visual Line 模式（行选择） |
| `Ctrl + v` | 进入 Visual Block 模式（块选择） |
| `:` | 进入命令模式 |

## 光标移动

### 基础移动

| 快捷键 | 说明 |
|--------|------|
| `h` | 左移一个字符 |
| `j` | 下移一行 |
| `k` | 上移一行 |
| `l` | 右移一个字符 |

> 记忆技巧：`j` 像一个向下的箭头，`k` 像一个向上的支架

### 单词级移动

| 快捷键 | 说明 |
|--------|------|
| `w` | 跳到下一个单词开头（word） |
| `W` | 跳到下一个空格分隔的单词开头 |
| `b` | 跳到上一个单词开头（back） |
| `B` | 跳到上一个空格分隔的单词开头 |
| `e` | 跳到当前/下一个单词结尾（end） |
| `E` | 跳到空格分隔的单词结尾 |

### 行内移动

| 快捷键 | 说明 |
|--------|------|
| `0` | 跳到行首 |
| `^` | 跳到行首第一个非空字符 |
| `$` | 跳到行尾 |
| `f` + 字符 | 向右跳到指定字符（find） |
| `F` + 字符 | 向左跳到指定字符 |
| `t` + 字符 | 跳到指定字符前一个位置（till） |
| `T` + 字符 | 向左跳到指定字符后一个位置 |
| `;` | 重复上一次 f/F/t/T |
| `,` | 反向重复上一次 f/F/t/T |

### 屏幕/文件级移动

| 快捷键 | 说明 |
|--------|------|
| `gg` | 跳到文件开头 |
| `G` | 跳到文件末尾 |
| 数字 + `G` | 跳到第 n 行，如 `50G` 跳到第 50 行 |
| `:` + 数字 | 跳到第 n 行（命令模式），如 `:50` |
| `Ctrl + f` | 向下翻页（forward） |
| `Ctrl + b` | 向上翻页（backward） |
| `Ctrl + d` | 向下翻半页（down） |
| `Ctrl + u` | 向上翻半页（up） |
| `H` | 跳到屏幕顶部（High） |
| `M` | 跳到屏幕中间（Middle） |
| `L` | 跳到屏幕底部（Low） |
| `zz` | 将当前行移到屏幕中央 |
| `zt` | 将当前行移到屏幕顶部 |
| `zb` | 将当前行移到屏幕底部 |

## 编辑操作

### 删除

| 快捷键 | 说明 |
|--------|------|
| `x` | 删除光标下的字符 |
| `X` | 删除光标前的字符 |
| `dd` | 删除整行 |
| `D` | 删除到行尾 |
| `dw` | 删除到下一个单词开头 |
| `de` | 删除到单词结尾 |
| `db` | 删除到单词开头 |
| `d$` | 删除到行尾 |
| `d0` | 删除到行首 |
| `dgg` | 删除到文件开头 |
| `dG` | 删除到文件末尾 |
| 数字 + `dd` | 删除多行，如 `3dd` 删除 3 行 |

### 修改（删除并进入插入模式）

| 快捷键 | 说明 |
|--------|------|
| `cc` | 修改整行 |
| `C` | 修改到行尾 |
| `cw` | 修改到单词结尾 |
| `ciw` | 修改整个单词（change inner word） |
| `ci"` | 修改双引号内的内容 |
| `ci'` | 修改单引号内的内容 |
| `ci(` | 修改括号内的内容 |
| `ci[` | 修改方括号内的内容 |
| `cit` | 修改 HTML 标签内的内容 |
| `s` | 删除字符并进入插入模式 |
| `S` | 删除整行并进入插入模式 |

### 复制与粘贴

| 快捷键 | 说明 |
|--------|------|
| `yy` | 复制整行（yank） |
| `Y` | 复制整行 |
| `yw` | 复制到下一个单词开头 |
| `yiw` | 复制整个单词 |
| `y$` | 复制到行尾 |
| `p` | 在光标后粘贴（paste） |
| `P` | 在光标前粘贴 |
| `"0p` | 粘贴最近复制的内容（不是删除的） |
| `"+y` | 复制到系统剪贴板 |
| `"+p` | 从系统剪贴板粘贴 |

### 撤销与重做

| 快捷键 | 说明 |
|--------|------|
| `u` | 撤销（undo） |
| `Ctrl + r` | 重做（redo） |
| `.` | 重复上一次操作 |

### 其他编辑

| 快捷键 | 说明 |
|--------|------|
| `r` + 字符 | 替换当前字符为指定字符 |
| `R` | 进入替换模式 |
| `~` | 切换大小写 |
| `>>` | 向右缩进 |
| `<<` | 向左缩进 |
| `==` | 自动缩进当前行 |
| `J` | 合并当前行和下一行 |

## 搜索与替换

### 搜索

| 快捷键 | 说明 |
|--------|------|
| `/` + 关键词 | 向下搜索 |
| `?` + 关键词 | 向上搜索 |
| `n` | 跳到下一个匹配 |
| `N` | 跳到上一个匹配 |
| `*` | 搜索光标下的单词（向下） |
| `#` | 搜索光标下的单词（向上） |
| `:noh` | 清除搜索高亮 |

### 替换

| 快捷键 | 说明 |
|--------|------|
| `:s/old/new` | 替换当前行第一个匹配 |
| `:s/old/new/g` | 替换当前行所有匹配 |
| `:%s/old/new/g` | 替换整个文件所有匹配 |
| `:%s/old/new/gc` | 替换整个文件，每次询问确认 |

## 文本对象（Text Objects）

Vim 的强大之处在于可以组合操作符和文本对象：

```bash
操作符 + 数量 + 动作/文本对象
```

### 常用操作符

| 操作符 | 说明 |
|--------|------|
| `d` | 删除（delete） |
| `c` | 修改（change） |
| `y` | 复制（yank） |
| `v` | 选择（visual） |
| `>` | 右缩进 |
| `<` | 左缩进 |

### 常用文本对象

| 文本对象 | 说明 |
|--------|------|
| `iw` | inner word（单词内部） |
| `aw` | a word（单词 + 周围空格） |
| `is` | inner sentence |
| `as` | a sentence |
| `ip` | inner paragraph |
| `ap` | a paragraph |
| `i"` | 双引号内部 |
| `a"` | 双引号及引号 |
| `i'` | 单引号内部 |
| `i(` 或 `ib` | 括号内部 |
| `a(` 或 `ab` | 括号及括号 |
| `iB` | 花括号内部 |
| `i[` | 方括号内部 |
| `it` | HTML 标签内部 |
| `at` | HTML 标签及标签 |

### 组合示例

| 命令 | 说明 |
|--------|------|
| `diw` | 删除整个单词 |
| `daw` | 删除单词及周围空格 |
| `ci"` | 修改双引号内的内容 |
| `da(` | 删除括号及内容 |
| `yap` | 复制整个段落 |
| `>ip` | 缩进段落 |
| `vit` | 选中 HTML 标签内容 |

## 窗口与标签页

### 窗口分割

| 快捷键 | 说明 |
|--------|------|
| `:sp` 或 `Ctrl + w s` | 水平分割 |
| `:vsp` 或 `Ctrl + w v` | 垂直分割 |
| `Ctrl + w h/j/k/l` | 在窗口间移动 |
| `Ctrl + w H/J/K/L` | 移动窗口位置 |
| `Ctrl + w =` | 均分窗口大小 |
| `Ctrl + w _` | 最大化当前窗口高度 |
| `Ctrl + w q` | 关闭当前窗口 |
| `Ctrl + w o` | 只保留当前窗口 |

### 标签页

| 快捷键 | 说明 |
|--------|------|
| `:tabnew` | 新建标签页 |
| `:tabc` | 关闭标签页 |
| `gt` | 下一个标签页 |
| `gT` | 上一个标签页 |
| 数字 + `gt` | 跳到第 n 个标签页，如 `2gt` |

## 文件操作

| 快捷键 | 说明 |
|--------|------|
| `:w` | 保存 |
| `:w 文件名` | 另存为 |
| `:q` | 退出 |
| `:q!` | 强制退出（不保存） |
| `:wq` 或 `:x` | 保存并退出 |
| `ZZ` | 保存并退出 |
| `ZQ` | 强制退出 |
| `:e 文件名` | 打开文件 |
| `:e!` | 放弃修改，重新加载 |
| `:bn` | 下一个 buffer |
| `:bp` | 上一个 buffer |
| `:bd` | 关闭 buffer |
| `:ls` | 列出所有 buffer |

## 宏（Macros）

| 快捷键 | 说明 |
|--------|------|
| `q` + 字母 | 开始录制宏到寄存器（如 `qa`） |
| `q` | 停止录制 |
| `@` + 字母 | 播放宏（如 `@a`） |
| `@@` | 重复上一次宏 |
| 数字 + `@` + 字母 | 播放宏 n 次，如 `10@a` |

### 宏的使用示例

```bash
qa          # 开始录制到寄存器 a
I// <Esc>   # 在行首添加注释
j           # 移动到下一行
q           # 停止录制
10@a        # 对接下来 10 行执行同样的操作
```

## 标记（Marks）

| 快捷键 | 说明 |
|--------|------|
| `m` + 小写字母 | 设置本地标记（如 `ma`） |
| `m` + 大写字母 | 设置全局标记（跨文件，如 `mA`） |
| `'` + 标记 | 跳到标记所在行（如 `'a`） |
| `` ` `` + 标记 | 跳到标记精确位置 |
| `:marks` | 列出所有标记 |
| `` `. `` | 跳到上次修改位置 |
| `''` | 跳到上次跳转前的位置 |

## 实用技巧

### 数字前缀

几乎所有命令都可以加数字前缀来重复：

| 命令 | 说明 |
|--------|------|
| `5j` | 向下移动 5 行 |
| `3dd` | 删除 3 行 |
| `10yy` | 复制 10 行 |
| `2dw` | 删除 2 个单词 |
| `50G` | 跳到第 50 行 |

### 常用组合

| 命令 | 说明 |
|--------|------|
| `ddp` | 交换当前行和下一行 |
| `xp` | 交换两个字符 |
| `yyp` | 复制当前行到下一行 |
| `ea` | 在单词末尾追加 |
| `bi` | 在单词开头插入 |
| `ggVG` | 全选 |
| `gg=G` | 全文自动缩进 |

## 总结

Vim 的学习曲线确实陡峭，但掌握后效率提升是实实在在的。建议：

1. **先掌握基础**：`hjkl` 移动、`i/a` 插入、`:wq` 保存退出
2. **逐步添加**：每周学几个新命令，形成肌肉记忆
3. **多用文本对象**：`ci"`, `diw`, `yap` 这类组合非常实用
4. **打开 Vim Tutor**：终端输入 `vimtutor` 进行交互式学习

记住：Vim 不是要替代鼠标，而是让你的双手不用离开键盘。当你发现自己在想「有没有更快的方式」时，答案通常是「有」。

## 参考资源

- [Vim Cheat Sheet](https://vim.rtorr.com/)
- [Learn Vim (the Smart Way)](https://github.com/iggredible/Learn-Vim)
- [Vim Adventures](https://vim-adventures.com/) - 通过游戏学习 Vim