Claude 键盘快捷键完全指南:交互模式下高效操作的全部按键
系统梳理 Claude Code 交互模式下的所有键盘快捷键,从启动 REPL 到中断请求、清屏、调出历史、多窗口配合,一篇搞定。
Claude Code 的交互模式(REPL)大量复用了 Bash 和 Readline 的按键习惯,再加上自己定义的几个快捷键。掌握这些按键能让你少打很多字,也能在 Claude 跑偏的时候立刻把它拽回来。
这篇文章把所有按键放在一起对照,并解释每个按键的设计初衷和容易踩的坑。
完整快捷键对照表
| 按键 | 作用 | 适用场景 |
|---|---|---|
Enter | 提交当前输入 / 在 Claude 提问时确认 | 单行 prompt 提交 |
Shift+Enter | 在输入框中插入换行符(不提交) | 写多行 prompt 或粘贴代码 |
Ctrl+C(一次) | 中断当前正在执行的请求 | Claude 跑偏了想立刻停下 |
Ctrl+C(连续两次) | 退出 Claude Code | 不想继续对话了 |
Ctrl+D | 在空输入框里按 = 退出 REPL | 干净退出,比 Ctrl+C 优雅 |
Esc(一次) | 取消当前未提交的输入 / 中断流式输出 | 按错了想清空输入框 |
Esc(连续两次) | 回到对话历史里某条消息进行编辑 | 修改之前的 prompt 重新运行 |
↑ / ↓ | 浏览之前提交过的 prompt 历史 | 重发上一条,或微调后再发 |
Ctrl+R | 反向增量搜索历史 | 找几十条之前的某条命令 |
Ctrl+L | 清屏(终端层面,不清对话上下文) | 屏幕太花想视觉上整洁 |
Tab | 触发斜杠命令补全 / 文件路径补全 | 不记得 / 后面有哪些命令时 |
Ctrl+A | 光标移到行首 | 编辑长 prompt |
Ctrl+E | 光标移到行尾 | 编辑长 prompt |
Ctrl+W | 删除光标前一个单词 | 改错单词不想全删 |
Ctrl+U | 删除整行(光标到行首) | 写到一半想全删了重写 |
Ctrl+K | 删除光标到行尾 | 删掉后半段 |
Alt+B / Alt+F | 按单词向前 / 向后跳光标 | 不用方向键一格格挪 |
Ctrl+Z | 把 Claude Code 进程挂起到后台 | 临时切回 shell 干别的事 |
fg | 把挂起的 Claude 拉回前台 | 接着 Ctrl+Z 后用 |
启动和退出
进入 REPL
# 最简单的启动方式
claude
# 启动时带初始 prompt(直接发送)
claude "看一下 README.md"
# 继续上次的对话
claude -c
# 跳到指定 session
claude --resume <session-id>
启动后会进入交互界面,光标停在输入框等你打字。
退出 REPL
退出有三种方式,各有优劣:
# 方式 1:在空输入框按 Ctrl+D
> [此时输入框为空,按 Ctrl+D]
# 立刻退出,session 自动保存
# 方式 2:连续按两次 Ctrl+C
> [按 Ctrl+C 第一次:中断当前请求]
> [再按一次 Ctrl+C:退出]
# 方式 3:在输入框输入 /exit 或 /quit
> /exit
坑: 如果输入框里有未提交的内容,按 Ctrl+D 不会退出,只会响一下铃。先按 Ctrl+U 清空输入框,再按 Ctrl+D。
中断和取消:Ctrl+C 和 Esc 的区别
这两个键在 Claude Code 里行为不一样,初学者很容易搞混。
Ctrl+C:中断”已经发出去”的请求
当 Claude 已经在生成响应(屏幕上字在滚),你觉得它跑偏了或者太慢了:
> 帮我把整个项目的所有 .py 文件改写成 TypeScript
[Claude 开始疯狂输出,发现方向错了]
# 按 Ctrl+C
^C
[已中断,token 已经消耗的部分不会退回]
> # 光标回到输入框,可以重新发起请求
按一次:中断当前请求,回到输入框; 连续按两次(间隔很短):退出整个 Claude Code。
Esc:取消”还没发出去”的输入
当你在输入框打字到一半,意识到要重写:
> 把 src/utils/parser.ts 里的_
[Esc]
> _
# 输入框被清空,光标回到起点
Esc 也能中断流式输出(和 Ctrl+C 的第一次按键效果类似),但它更安全——不会因为多按一次就把 Claude Code 杀掉。
Esc Esc:跳回去编辑之前的消息
连按两次 Esc 会进入”消息编辑模式”,可以选中之前发过的某条 prompt 修改后重新运行。这在你发现一开始的 prompt 写歪了、想从那条开始改的时候非常有用。
> 第一条 prompt
> 第二条 prompt(基于错误的假设)
> 第三条 prompt
[按两次 Esc]
[选中"第二条 prompt"修改]
[Enter 重新运行]
# Claude 会从那条开始重新走,第三条的回复会被覆盖
历史导航:方向键和 Ctrl+R
上下方向键浏览
↑ 调出上一条 prompt,再按 ↑ 继续往前翻。↓ 往回走。
> ls src/
> grep -r "TODO" .
> claude help
[此时按 ↑]
> claude help # 调出最近一条
[再按 ↑]
> grep -r "TODO" . # 再往前一条
[按 ↓]
> claude help # 回到最近的
调出来的 prompt 可以直接 Enter 重发,也可以编辑之后再发。
Ctrl+R 反向搜索
历史很长的时候,方向键一条条翻太慢。按 Ctrl+R 进入搜索模式,输入关键词就能直接定位:
[按 Ctrl+R]
(reverse-i-search)`':
[输入 "test"]
(reverse-i-search)`test': 帮我写 jest 单元测试
[再按一次 Ctrl+R]:找下一条匹配
(reverse-i-search)`test': 跑一下 npm test 看看
[Enter]:选中并提交
[Esc]:选中但不提交,让你编辑
输入框里的光标移动和编辑
Claude Code 的输入框基本上就是一个 Readline 编辑器,所以 Bash 用户的肌肉记忆几乎全部能用。
光标移动
Ctrl+A # 光标 → 行首
Ctrl+E # 光标 → 行尾
Alt+B # 光标 → 上一个单词的开头
Alt+F # 光标 → 下一个单词的结尾
Ctrl+B # 光标 ← 一个字符(同 ←)
Ctrl+F # 光标 → 一个字符(同 →)
删除
Ctrl+H # 删光标前一个字符(同 Backspace)
Ctrl+D # 删光标后一个字符(注意:空行时是退出!)
Ctrl+W # 删光标前一个单词
Alt+D # 删光标后一个单词
Ctrl+U # 删从光标到行首的全部
Ctrl+K # 删从光标到行尾的全部
撤销 / 重做
Ctrl+_ # 撤销上一步编辑
Ctrl+Y # 把 Ctrl+K / Ctrl+U 删掉的内容粘回来
Ctrl+Y 这个特别有用:你 Ctrl+U 把整行删了之后才发现还想要,按 Ctrl+Y 可以拿回来。
清屏:Ctrl+L 和 /clear 的区别
很多人以为 Ctrl+L 会清空对话,其实不是。
| 操作 | 效果 |
|---|---|
Ctrl+L | 只清屏幕,对话上下文还在,Claude 还记得之前聊的 |
/clear | 清空对话历史,Claude 会忘掉所有聊过的内容,相当于重新开始 |
/compact | 压缩历史(保留摘要),上下文不丢但占的 token 少 |
什么时候用哪个:
# 屏幕看不下了,想清爽一点继续聊
> [Ctrl+L]
# 这个话题聊完了,开始全新的任务
> /clear
# 上下文很长但还想继续,担心 token 爆掉
> /compact
回车 vs Shift+Enter
输入框里:
Enter= 提交当前内容给 ClaudeShift+Enter= 在当前位置插入换行符,不提交
写多行 prompt 必须用 Shift+Enter:
> 帮我看下这段代码:[Shift+Enter]
function foo(x) {[Shift+Enter]
return x + 1;[Shift+Enter]
}[Shift+Enter]
有什么问题?[Enter]
# 这一整段作为一条消息发送
某些终端模拟器不支持 Shift+Enter(比如某些 Windows Terminal 旧版本),可以试试 Alt+Enter 或 Ctrl+J,或者用 """ 多行字符串(详见多行输入那篇文章)。
复制粘贴技巧
从终端复制 Claude 的输出
Claude 输出的内容在终端里就是普通文本,用终端原生的复制方式:
| 终端 | 复制 | 粘贴 |
|---|---|---|
| iTerm2 / Terminal.app(macOS) | Cmd+C | Cmd+V |
| Windows Terminal | Ctrl+Shift+C | Ctrl+Shift+V |
| GNOME Terminal | Ctrl+Shift+C | Ctrl+Shift+V |
| tmux | Prefix + [ 进入 copy mode,空格选中,回车复制 |
粘贴大段代码到 Claude
直接 Ctrl+Shift+V 粘贴。如果代码有多行,Claude Code 会自动识别并保留换行(Bracketed Paste 模式)。
坑: 极少数终端没开启 Bracketed Paste,粘贴的多行内容会被一行一行依次”提交”。如果遇到这个问题:
# 在 ~/.inputrc 加上
set enable-bracketed-paste on
# 或者改用 """ 多行字符串
> """
> 这里粘贴
> 多行
> 内容
> """
多窗口和 tmux 配合
Claude Code 一个会话只能聊一个对话。要并行处理多个任务,最常见的做法是 tmux 多窗格 + 多个 Claude 实例。
经典布局
# 启动 tmux
tmux new -s dev
# 切成左右两栏
[Prefix + %]
# 左边跑 dev server
$ npm run dev
# 切到右边
[Prefix + →]
# 右边开 Claude
$ claude
# 现在可以一边跑一边问
常用 tmux 按键(默认 prefix = Ctrl+B)
| 按键 | 作用 |
|---|---|
Prefix + % | 垂直分屏 |
Prefix + " | 水平分屏 |
Prefix + →/←/↑/↓ | 切换窗格 |
Prefix + d | 把整个 tmux session 挂到后台(detach) |
tmux a -t dev | 重新接上 detach 的 session |
Claude Code 多实例的实用姿势
# 窗格 1:在主分支跑测试
$ claude
# 窗格 2:在 feature 分支改 bug
$ git worktree add ../proj-feat feat-branch
$ cd ../proj-feat && claude
# 两个 Claude 各自有独立 session 和 CLAUDE.md,互不干扰
进程挂起:Ctrl+Z 和 fg
正在和 Claude 对话,突然要切回 shell 干点别的(比如 git diff 看一眼):
> 帮我重构这个函数
[Claude 在思考...]
# 不用退出,直接挂起
^Z
[1]+ Stopped claude
$ git diff src/utils.ts
... [看完了] ...
# 拉回前台继续
$ fg
> # 回到 Claude,对话状态完全保留
Ctrl+Z + fg 是 Unix 标准操作,比退出再 claude -c 快得多。
常见问题
Q:我按 Shift+Enter 没反应,直接提交了。
A:终端没启用相应的转义序列。检查一下:
- iTerm2:Preferences → Profiles → Keys → 确保没有把 Shift+Enter 映射成”Send: \r”
- Windows Terminal:搜索”Shift+Enter”看看键位绑定
- 终端类型变量是否正确:
echo $TERM应该是xterm-256color之类
实在不行就用 """ 多行字符串。
Q:按 Ctrl+C 没反应,Claude 还在输出。
A:按住别松,或者快速连按几下。某些慢网络下,中断信号到服务端要一点时间。如果还是不行,按 Esc 试试,或者干脆 Ctrl+\ 强制中断。
Q:方向键翻历史只能翻当前 session 的,没法看上次启动 Claude 时的命令。
A:不对,Claude Code 的命令历史是跨 session 的,存在 ~/.claude/history 之类的文件里。如果你翻不到旧记录,可能是开了多个 Claude 实例同时写历史导致冲突。详细机制看”Claude 命令历史”那篇。
Q:我想自定义快捷键。
A:Claude Code 本身不直接暴露快捷键配置,但因为它用的是 Readline,你可以改 ~/.inputrc 里的绑定,比如:
# ~/.inputrc
"\C-x\C-c": "/clear\n"
按 Ctrl+X 然后 Ctrl+C 会输入 /clear 并回车。但这是 hack 路线,不保证未来版本不变。
快速参考卡
打印贴在显示器边上:
进入 claude / claude -c
退出 Ctrl+D(空行)/ /exit / Ctrl+C×2
中断请求 Ctrl+C×1 / Esc
取消输入 Esc / Ctrl+U
历史 ↑↓ / Ctrl+R 搜索
清屏 Ctrl+L(不清对话)
清对话 /clear(不清屏)
压缩对话 /compact
换行 Shift+Enter
补全 Tab
挂起 Ctrl+Z(fg 拉回)
编辑历史 Esc Esc