青蛙小白
博客 / 2026/01

Claude Code CLI 交互模式与 Vim 编辑体验

2026/01/08 · — 字 · 阅读约 — 分钟 ·
目录

每天在终端里敲几十上百条指令,输入效率直接影响工作节奏。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+EntermacOS 默认
Shift+EnteriTerm2、WezTerm、Ghostty、Kitty 开箱即用
Ctrl+J插入换行符
如果你用的是 VS Code Terminal、Alacritty、Zed 或 Warp,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 键。不同终端的配置方式

终端配置方式
iTerm2Settings → Profiles → Keys → Left/Right Option key → 选 “Esc+”
Terminal.appSettings → 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+YCtrl+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 快捷键也足够用了。

比较实用的几个点:

  1. /vim 可以随时切换,不喜欢随时关掉
  2. Ctrl+O 看详细输出,调试时很有用
  3. Esc + Esc 可以回退,这个是救命的
  4. Shift+Tab 快速切换权限模式,省得每次都敲 y

参考

评论