---
title: "Vim 编辑器模式"
description: "写长提示词时，少挪手就能省一半时间。这一节讲 Vim 模式怎么开、两个模式怎么切、五个键怎么先用起来，以及它和真 Vim 的边界。"
updated: 2026-11-13
canonical: https://docai.cc/learn/vim-editor-mode/
markdown_mirror: https://docai.cc/learn/vim-editor-mode.md
---
## 什么时候值得开

一天只写两三句短指令，开 Vim 模式只会碍事：多一次模式切换，多一层心智负担。但如果经常写多段提示词——贴错误日志、列改动要求、写验收标准——用方向键挪光标和逐个删字就很浪费。Vim 模式把一整套编辑动作搬进输入框，熟练之后换一个词、删一整行都只要两三个键。

先记住一点：它不是完整的 Vim。这个前提立住，后面就不会因为某个插件或自定义映射不生效而困惑。

判断要不要开，可以看三个信号。第一，单条提示词经常超过一百字，写到后半段还要回头改前半段。第二，经常把几十行日志或代码贴进来，再在里面挑几处改。第三，你本来就用 Vim，hjkl 已经成了条件反射。三条里占一条，收益就大于学习成本；一条都不占，默认键位更省心。

### 和默认键位方案比

Claude Code 默认沿用终端行编辑器的习惯，Ctrl+A 到行首、Ctrl+E 到行尾、Ctrl+W 删一个词。两套方案没有优劣，只看场景：

| 维度 | 默认（行编辑风格） | Vim 模式 |
| --- | --- | --- |
| 上手成本 | 低，记住几个 Ctrl 组合即可 | 高，要先习惯两个模式 |
| 改长文 | 一般，移动靠按词跳 | 强，删行、改词、跳段都很快 |
| 改短句 | 顺手 | 反复切模式反而拖慢 |
| 和终端习惯 | 一致 | 不一致，要重新建立反射 |
| 需要留意的负担 | 少 | 要时刻知道自己在哪个模式 |

还有一个容易被忽略的因素：你经常在不同终端之间切换，或者同一台机器多人轮流用。先固定一套主用键位，另一套的组合键别混着按；像 Ctrl+A 这种在两边落点不同的组合，混用最容易在着急时按错。确定用 Vim 模式后，给自己一周时间只用它，形成反射再谈效率。

## 打开与确认

当前版本在 /config 里选 Editor mode 就能开关；也可以在 ~/.claude/settings.json 里写 "editorMode": "vim"，让之后每次启动直接进入。旧版有过独立的 /vim 命令，已经在 v2.1.92 移除，看到旧教程时别照着敲。不同版本的提示方式不一样：有的在提示符前标出当前模式，有的靠光标形状区分，块状表示普通模式，细线表示插入模式。看不出来时，先按 Esc，再按一下 i；不管刚才在哪个模式，这两下都会把你放回插入模式。

想写入配置，文件长这样：

```json
{
  "editorMode": "vim"
}
```

改完保存，下次启动生效；正在运行的会话不会热加载，退出重进一次最稳。想临时关掉，回到 /config 把 Editor mode 改回默认即可，不必去动配置文件。

### 三步确认当前状态

不确定自己是不是真的开了 Vim 模式，按顺序做三个动作：

1. 打开 /config，看 Editor mode 那一行的当前值。
2. 回到输入框按 Esc，再按 h 或 l，看光标是否按字符左右移动；能移动说明普通模式生效。
3. 按 i，再敲一个字母。字母出现在输入框里，说明插入模式正常；字母没出现、光标反而跳了，说明还停在普通模式。

三步都符合预期，再开始写正文。这个小检查只要几秒，能省掉后面一串「怎么不听话」的困惑。

## 两个模式，一条主线

插入模式就是普通输入框，按什么就输入什么。普通模式下按键是命令：移动、删除、复制、跳转。新手最常见的困惑是「怎么打字没反应」，原因几乎都是停留在了普通模式。

切换本身很便宜。按 i 在光标处开始输入，a 往后挪一格再输入，大写 I 到行首，大写 A 到行尾，o 在下方新开一行，大写 O 在上方新开一行。退回普通模式按 Esc，Ctrl+[ 效果相同。心法只有一句：大部分时间待在普通模式，真要打字才进插入模式，打完立刻退出。

六个进入插入模式的键，差别只在落点：

| 按键 | 落点 | 典型用途 |
| --- | --- | --- |
| i | 光标所在字符之前 | 句中补字 |
| a | 光标所在字符之后 | 句尾续写 |
| I | 本行第一个非空字符前 | 给整行加前缀 |
| A | 本行末尾 | 补一句要求 |
| o | 下方新起一行 | 追加一条约束 |
| O | 上方新起一行 | 在前面插条件 |

刚切换过来时，最容易犯的错是在普通模式里直接敲正文。看到屏幕上的字没出现、光标却跳来跳去，别再重复敲，先按 Esc 再按 i。另一个对称的错是打完字忘了退出，接着按 / 想搜索，结果输入的是一串字面字符。养成「打完就 Esc」的节奏，这两个坑都不会踩。

## 五个键先够用

不熟悉 Vim 的人不必背整张表，先把五个动作练顺：

| 动作 | 按键 | 使用场景 |
|---|---|---|
| 回到普通模式 | Esc | 任何时候按都不会错 |
| 开始输入 | i 或 a | 进入插入模式 |
| 删除当前行 | dd | 整行写歪了 |
| 撤销 | u | 按错之后的保险 |
| 提交 | 回车 | 确认内容后直接提交 |

这五个键能覆盖大半日常改稿。之后补移动与改词：h j k l 逐字符走，w 和 b 按词跳，0 与 $ 到行首行尾，gg 与 G 到整段开头结尾，f 加一个字符则跳到本行下一个该字符处；yy 复制一行，p 粘贴；ciw 改掉光标所在的词，ci" 改引号里的内容。这些组合的共同点是「动作加范围」，记范围比记组合更省力。

练这五个键，可以拿一段三行草稿做循环：按 i 写一行，Esc 退出，dd 删掉，u 撤回，再按 A 在行尾补一句，最后回车提交。整套动作重复三遍，手就有记忆了。不要一上来就背三十个命令，先用顺五个，再按下面的地图逐个加。

## 一段真实的编辑过程

假设要写这样一段提示词：

```text
请把 src/api/client.ts 里的重试逻辑抽成独立函数，
保留现有日志，并补三个覆盖超时场景的测试。
```

流程可以是这样：从 /config 打开 Editor mode，按 i 进入插入模式，把内容写完（写多行用 Ctrl+J 换行，单独按回车是提交）；按 Esc 回到普通模式；发现某个词想换掉，用 w 或 b 按词移动，或者按 f 加一个字符直接跳到该字符上，再用 ciw 改掉那个词；多删了一行就按 u 撤回；确认无误后按回车提交。整个过程不需要把手移出主键区，也不用反复按退格。

再换一个改稿场景：三行提示词已经贴在输入框里，你想删掉中间一行、把最后一行复制成第二条约束，再换掉一个词。

1. 按 gg 回到第一行，按 j 下移到第二行，dd 删掉它。
2. 按 yy 复制当前行，p 在下方粘贴一份。
3. 用 w 移到要改的词上，ciw 删掉它并直接输入新词。
4. 按 Esc 回到普通模式；改错了按 u 逐步撤回，Ctrl+R 重做。
5. 确认无误后按回车提交。

这个场景练的是「移动—删除—复制—修改」的衔接。每做完一个动作先回普通模式再动光标，能避免在插入模式里误触命令。

想整段替换某个反复出现的词，可以试 :%s/旧词/新词/g。这个命令在部分版本里可用，在另一些版本里可能被当作普通输入，第一次用先拿一段无关紧要的草稿试，看到确实替换了再依赖它。命令末尾加 c 会在每处替换前询问，适合改动位置多的场景。

## 普通模式的完整键位地图

真正让 Vim 好用的是「动作加范围」的组合方式：一个动词配一个移动或文本对象，就能精确处理一片区域。下面按类别列出常用键，够覆盖输入框里的绝大多数编辑动作。

### 移动

| 目标 | 按键 | 说明 |
| --- | --- | --- |
| 单字符 | h j k l | 左、下、上、右 |
| 单词 | w b e | 下一个词首、上一个词首、词尾 |
| 行内 | 0 ^ $ | 行首、首个非空字符、行尾 |
| 全文 | gg G | 第一行、最后一行 |
| 指定行 | nG | 跳到第 n 行，例如 5G |
| 段落 | { } | 上一段、下一段（以空行分隔） |
| 行内定位 | f 加字符 | 跳到本行下一个该字符处 |

长提示词里最常用的是 gg 和 G：写完发现开头要改，按 gg 一下到顶；要补验收标准，按 G 一下到底。中间移动用 w 和 b，比连按方向键快。

### 删除与复制

| 目标 | 按键 | 说明 |
| --- | --- | --- |
| 单个字符 | x / X | 删光标处 / 删光标前 |
| 一个词 | dw / db | 向后删 / 向前删 |
| 整行 | dd / ndd | 删一行 / 删 n 行，如 3dd |
| 到行首尾 | d0 / D | 删到行首 / 删到行尾 |
| 词内 | diw | 不管光标在词中哪里都能删整个词 |
| 引号或括号内 | di" / di( | 删成对符号之间的内容 |
| 整段 | dap | 删光标所在的一段 |
| 复制 | yy / nyy / yw / y$ / yiw | 复制行 / n 行 / 一个词 / 到行尾 / 词内 |
| 粘贴 | p / P | 光标后 / 光标前 |

复制在 Vim 里叫 yank，粘贴叫 put，记住这两个词，看别的教程时不容易迷路。注意 y 和 d 都只是「动作」，后面跟什么决定范围：跟 w 是词，跟 $ 是行尾，跟 iw 是当前词。理解这一层，就不用逐个背组合。

### 修改、撤销与查找

| 目标 | 按键 | 说明 |
| --- | --- | --- |
| 改一个词 | cw / ciw | 删除并进入插入模式 |
| 改引号内 | ci" | 常用于改路径、变量名 |
| 改整行 | cc / C | 改整行 / 改到行尾 |
| 删字符并输入 | s / S | 改一个字符 / 改一整行 |
| 撤销与重做 | u / Ctrl+R | 反悔 / 恢复 |
| 重复上次修改 | . | 连着改多处同样内容时最省力 |
| 向后查找 | / 加词 | 版本不同，可能落到输入框或历史 |
| 下一个匹配 | n / N | 配合查找使用，是否可用以实测为准 |
| 行内替换 | :s/旧/新/g | 当前行全部替换 |
| 全文替换 | :%s/旧/新/g | 整段全部替换，末尾加 c 逐处确认 |

「.」这个键值得单独练：改完一处后移动光标，按一次点号就能重复刚才的修改。批量把几个变量名改成同一种格式时，它比一次次输入快得多。

## 常见故障：现象、原因、处理

| 现象 | 为什么 | 怎么办 |
| --- | --- | --- |
| 敲字母屏幕上没字，光标乱跳 | 还停在普通模式，字母被当成命令 | 先按 Esc，再按 i |
| 按 / 想查输入框里的词，却跳出了历史 | 这个键被借给历史搜索了 | 用 w、b、f 定位；先确认本版本的行为 |
| 输入框突然空了 | 误按 :q! 或连按两次 Esc | 先按 u 试试，再按上方向键翻历史 |
| 大写命令行为不对 | Caps Lock 开着，大小写含义不同 | 关掉 Caps Lock 重试 |
| Ctrl+B 之类的组合没反应 | 终端复用器的前缀键被截走 | 连按两次前缀，或把前缀换成别的键 |
| 自定义映射完全不生效 | 它不读取 .vimrc | 改用外部编辑器写长稿 |
| 块选择按不出来 | 只实现了字符级和行级选择 | 用 v 或 V 完成选择 |
| 提交时报错，内容却被清空 | 某些版本把 :q! 当作清空输入 | 重新翻历史找回，之后少碰这个命令 |

表格里的处理顺序不是随便排的：先确认模式，再确认按键有没有被终端截走，最后才怀疑版本差异。绝大多数「Vim 模式坏了」都是前两步。

## 已知边界与冲突

它模拟的是按键行为，不加载你的 .vimrc：那里的自定义映射、插件、主题、自动命令都不会生效；可视选择支持字符级（v）和行级（V），块选择没有。重度依赖自己配置的人，更适合在真正的编辑器里写完再粘贴，或者把 EDITOR 指向常用编辑器，按 Ctrl+G 或 Ctrl+X Ctrl+E 调出它来写长提示词。

外部编辑器这条路值得单独说一下。把环境变量 EDITOR 设成 vim，或者在对话里按 Ctrl+X Ctrl+E，就会临时打开完整编辑器；写完保存退出，内容回到输入框。这个组合依赖终端的行编辑配置，按了没反应，先查本机配置，不必反复重装工具。另一条更稳的路是把提示词存成文件，用 claude < prompt.md 送进去，编辑器是什么、终端是什么都不影响。

还有几处冲突要留意：普通模式下按 / 或 Ctrl+R 都是反向历史搜索，不是在输入框里搜词，想移动光标得靠 w、b、f 这些动作；大写与小写含义不同，Caps Lock 开着会按出一串意外命令；终端复用器的前缀键也可能抢走某些组合，tmux 里连按两次 Ctrl+B 才会传给 Claude Code。遇到按键没反应，先确认自己在哪个模式，再查键位冲突。想理解这些按键最终作用在哪一层，可以看[Claude Code 是什么](/concepts/claude-code/)。

最后划一条适用边界：如果只是偶尔改一两个错字，别开 Vim 模式；如果经常在终端里写超过屏幕一屏的长提示词，或者你本来就离不开 Vim 的编辑手感，它值得花时间练。练的顺序是五个基础键、移动与改词、最后才是替换和文本对象，不必一次学全。同章的[键盘快捷键](/learn/claude-code-shortcuts/)、[命令历史](/learn/command-history/)和[后台 bash 命令](/learn/background-bash-commands/)也值得放在一起用；需要贴多行内容时，先看[多行输入](/learn/multi-line-input/)把换行方式定下来，再用 Vim 模式改稿，顺序会更顺。
