每天在终端里敲几十上百条指令,输入效率直接影响工作节奏。Claude Code CLI 提供了一套交互模式的功能,本文总结一下日常用得比较多的快捷键和 Vim 模式。
Claude Code 的输入编辑器
一个容易混淆的概念:Claude Code 的 Vim 模式和终端自身的 Vim 支持、VS Code 的 Vim 插件是完全独立的三个东西。
┌─────────────────────────────────────────┐
│ VS Code Terminal / iTerm2 / 其他终端 │
│ ┌─────────────────────────────────────┐ │
│ │ Claude Code CLI │ │
│ │ ┌─────────────────────────────────┐ │ │
│ │ │ 输入编辑器 ← Vim 模式在这里生效 │ │ │
│ │ └─────────────────────────────────┘ │ │
│ └─────────────────────────────────────┘ │
└─────────────────────────────────────────┘Claude Code 内置了自己的行编辑器,Vim 模式只作用于这个编辑器的输入框。在 VS Code 里装了 Vim 插件也好,在 Zsh 里配置了 Vi mode 也好,都不影响 Claude Code 自己的输入体验。
多行输入
写复杂的提示词时,经常需要多行输入。Claude Code 支持几种方式:
| 方法 | 说明 |
|---|---|
\ + Enter | 最通用,所有终端都支持 |
Option+Enter | macOS 默认 |
Shift+Enter | iTerm2、WezTerm、Ghostty、Kitty 开箱即用 |
Ctrl+J | 插入换行符 |
Shift+Enter 需要先运行 /terminal-setup 命令来安装键位绑定。常用快捷键
这些快捷键在日常使用中出镜率很高:
| 快捷键 | 功能 |
|---|---|
Ctrl+C | 取消当前输入或停止生成 |
Ctrl+D | 退出 Claude Code |
Ctrl+L | 清屏(保留对话历史) |
Ctrl+O | 切换详细输出模式,显示工具调用细节 |
Ctrl+R | 反向搜索历史命令 |
Ctrl+B | 后台运行任务(tmux 用户需要按两次) |
Esc + Esc | 回退代码/对话到之前的状态(Rewind) |
Shift+Tab / Alt+M | 在 Auto-Accept、Plan 和普通模式之间切换 |
Option+P / Alt+P | 不清空输入框切换模型 |
Option+T / Alt+T | 切换 extended thinking 模式 |
关于 Alt 键快捷键,macOS 用户需要在终端里配置 Option 键为 Meta 键。不同终端的配置方式:
| 终端 | 配置方式 |
|---|---|
| iTerm2 | Settings → Profiles → Keys → Left/Right Option key → 选 “Esc+” |
| Terminal.app | Settings → Profiles → Keyboard → 勾选 “Use Option as Meta key” |
| VS Code Terminal | 设置 "terminal.integrated.macOptionIsMeta": true |
| Ghostty | 配置文件 ~/.config/ghostty/config 添加 macos-option-as-alt = true |
配置后 Option 键在终端内会变成 Alt/Meta 键,原本的特殊字符输入功能(如 Option+2 → €)会失效。如果偶尔需要输入特殊字符,Ghostty 可以用 macos-option-as-alt = left 只改左边的 Option 键。
行编辑快捷键
这些是标准的 readline 风格快捷键:
| 快捷键 | 功能 |
|---|---|
Ctrl+K | 删除到行尾(内容保存到粘贴缓冲区) |
Ctrl+U | 删除整行(内容保存到粘贴缓冲区) |
Ctrl+Y | 粘贴刚才删除的内容 |
Alt+Y | 在 Ctrl+Y 之后,循环粘贴历史 |
Alt+B | 光标向后移动一个单词 |
Alt+F | 光标向前移动一个单词 |
斜杠命令
输入 / 开头可以触发内置命令:
/vim:切换 Vim 编辑模式/config:打开配置/terminal-setup:安装 Shift+Enter 多行输入的终端绑定/theme:切换代码块语法高亮/clear:清空当前会话的命令历史
Vim 模式
如果你是 Vim 用户,Claude Code 的 Vim 模式会让输入体验顺滑很多。
开启和关闭
/vim 是一个 toggle 命令:
# 当前是默认模式,执行后进入 Vim 模式
/vim
# 输出: Editor mode set to vim. Use Escape key to toggle between INSERT and NORMAL modes.
# 当前是 Vim 模式,执行后退回默认模式
/vim
# 输出: Editor mode set to normal. Using standard (readline) keyboard bindings.全局默认配置
如果想每次启动都是 Vim 模式:
# 全局启用 Vim 模式
claude config set --global preferredEditorMode vim
# 恢复默认模式
claude config set --global preferredEditorMode default模式切换
| 按键 | 动作 | 原模式 |
|---|---|---|
Esc | 进入 NORMAL 模式 | INSERT |
i | 在光标前插入 | NORMAL |
I | 在行首插入 | NORMAL |
a | 在光标后插入 | NORMAL |
A | 在行尾插入 | NORMAL |
o | 在下方新开一行 | NORMAL |
O | 在上方新开一行 | NORMAL |
导航(NORMAL 模式)
| 按键 | 动作 |
|---|---|
h/j/k/l | 左/下/上/右 |
w | 下一个单词 |
e | 单词末尾 |
b | 上一个单词 |
0 | 行首 |
$ | 行尾 |
^ | 行首非空字符 |
gg | 输入开头 |
G | 输入末尾 |
f{char} | 跳到下一个指定字符 |
F{char} | 跳到上一个指定字符 |
t{char} | 跳到下一个指定字符前 |
T{char} | 跳到上一个指定字符后 |
; | 重复上次 f/F/t/T |
, | 反向重复上次 f/F/t/T |
编辑操作(NORMAL 模式)
| 按键 | 动作 |
|---|---|
x | 删除字符 |
dd | 删除整行 |
D | 删除到行尾 |
dw/de/db | 删除单词/到词尾/到词首 |
cc | 修改整行 |
C | 修改到行尾 |
cw/ce/cb | 修改单词/到词尾/到词首 |
yy/Y | 复制整行 |
yw/ye/yb | 复制单词/到词尾/到词首 |
p | 在光标后粘贴 |
P | 在光标前粘贴 |
>> | 缩进 |
<< | 取消缩进 |
J | 合并行 |
. | 重复上次修改 |
文本对象
文本对象配合 d(删除)、c(修改)、y(复制)等操作符使用:
| 文本对象 | 含义 |
|---|---|
iw / aw | 内部单词 / 包含空格的单词 |
iW / aW | 内部大单词(空格分隔) / 包含空格的大单词 |
i" / a" | 双引号内部 / 包含双引号 |
i' / a' | 单引号内部 / 包含单引号 |
i( / a( | 圆括号内部 / 包含圆括号 |
i[ / a[ | 方括号内部 / 包含方括号 |
i{ / a{ | 花括号内部 / 包含花括号 |
实际使用中,ciw(修改当前单词)、ci"(修改引号内的内容)、ci((修改括号内的内容)这几个组合最常用。比如你写了个提示词:
请分析 "app.py" 文件中的 login 函数发现文件名写错了,光标移到引号内任意位置,ci" 就能直接替换引号里的内容。
其他实用功能
命令历史
- 历史记录按工作目录分开存储
- 上下箭头可以翻阅历史
Ctrl+R可以交互式搜索/clear清空历史
快捷前缀
!前缀:直接进入 Bash 模式运行命令,不需要 Claude 确认。输出会加入对话上下文。@前缀:触发文件路径自动补全。
后台任务
Ctrl+B 可以把正在运行的任务放到后台。对于 build 工具、包管理器、开发服务器这类长时间运行的命令很有用。后台任务的输出会被缓存,可以通过 BashOutput 工具获取。
小结
Claude Code CLI 的交互模式在细节上做了不少优化。对于 Vim 用户来说,开启 Vim 模式后的输入体验和在 Vim 里差不多;不用 Vim 的用户,标准的 readline 快捷键也足够用了。
比较实用的几个点:
/vim可以随时切换,不喜欢随时关掉Ctrl+O看详细输出,调试时很有用Esc+Esc可以回退,这个是救命的Shift+Tab快速切换权限模式,省得每次都敲 y