Codex CLI 全部快捷键详解(2026 年 6 月)

已核实的 Codex CLI 快捷键参考:中断与退出、Ctrl+J 换行、Ctrl+G 调用外部编辑器、Ctrl+R 历史搜索、Esc Esc 改写、Shift+Tab 切权限模式,以及终端失效的修复办法。

一句话总结 / TL;DR

Codex CLI 基本全靠键盘操作。真正每天会用到的几个键:Esc 中断正在跑的任务,Ctrl+J 插入一个在任何终端都生效的换行,Ctrl+G 调出你的 $EDITOR 写长 prompt,Ctrl+R 搜历史输入,Esc Esc 回退去改之前发过的消息,Shift+Tab 循环切换权限模式(Read-only、Auto、Full Access)。在会话里拿不准时,输入 /keymap 就能打印出你当前版本真正生效的键位。

版本提醒(截至 2026 年 6 月):本文按 Codex CLI v0.135.x 整理,这是 OpenAI 截至 2026 年 5 月发布的版本线。Codex 迭代很快,少数键位是按版本逐步加入的(下文会标注),所以你会话里的 /keymap 永远是最终标准。

这篇适合谁看 / Who this is for

  • 每天用 codex、但还在一个字一个字改长 prompt 的开发者。
  • 经常写好几段的需求说明,却老是没写完就误发出去的人。
  • 跑长任务、需要随时中断、改方向、回退而又不想丢上下文的人。
  • 要给团队写「Codex 怎么用」内部 onboarding 文档的人。
  • 在 iTerm2、Apple Terminal、VS Code 终端、Warp 或 tmux 里按键行为不一致的人。

最先记的几个键 / Memorize these first

其他都可以慢慢学,先把这几个记牢,它们覆盖了真实使用里约 90% 的场景。

快捷键作用备注
Esc中断当前模型回合或工具调用只停任务,不会撤销已改的文件
Ctrl+J在输入框插入换行跨终端最稳的换行键
Ctrl+G$EDITOR / $VISUAL 打开 prompt写长需求的最佳方式
Ctrl+R反向搜索历史输入v0.121.0+,Enter 选中、Esc 取消
Esc Esc改写上一条消息(输入框为空时)连按可继续回退,Enter 从该处分叉
Shift+Tab会话中循环切权限模式Read-only → Auto → Full Access
Tab把后续输入排进下一回合不会打断当前回合
Enter(任务运行中)中途插入新指令Codex 读取后不丢上下文
Ctrl+L重绘屏幕不清掉上下文
? / /keymap显示当前生效键位你这个版本的最终标准

会话控制:中断、退出、回退 / Session control

快捷键详解
Esc中断当前回合或工具调用。发现方向跑偏时立刻按。
Ctrl+C取消当前输入;连按两次退出会话。也可以输入 /exit/quit
Ctrl+D输入框为空时退出;连按两次强制退出。
Esc Esc输入框为空时,改写你的上一条消息。继续按 Esc 可在历史里继续往前回退,然后按 Enter 从该处分叉出新对话。
Ctrl+L长输出把屏幕弄乱时重绘终端,不会清掉 Codex 的上下文。
Ctrl+O把 Codex 最近一次完成的输出复制到剪贴板。

最重要的区分:Esc 只是停掉当前回合,但 EscCtrl+C 都不会回滚 Codex 已经写过的文件。要撤销改动,得明确告诉 Codex(比如「把你对 src/auth.ts 的改动撤回」),或者自己看 git diff 再丢弃。用 Esc Esc 分叉改的是对话,不是磁盘上的文件。

权限和自动化模式 / Approval and automation modes

Codex CLI 提供三种权限模式。会话中用 Shift+Tab 循环切换,或用 /approvals 命令直接指定(部分版本叫 /permissions)。

模式Codex 可以做什么什么时候用
Read-only浏览、读文件、给出方案;不改文件、不跑命令第一次看陌生仓库、做规划时
Auto(默认)在工作目录内读、改、跑命令;要碰目录外内容或访问网络时会先问你信任的仓库里的日常开发
Full Access跨整台机器工作,含网络访问,全程不问仅限隔离容器或可丢弃的临时 VM

经验法则:用 Read-only 规划,用 Auto 干日常活,Full Access 只在可以随手丢掉的沙箱里开。Auto 之所以是安全默认,正是因为它把写操作限制在工作目录内,访问网络和目录外的动作仍要先确认。

写 prompt:换行、编辑器、文件、shell / Composing prompts

这是 Codex 最省时间、也是终端最容易添乱的地方。

快捷键 / 符号作用
Ctrl+J插入换行而不发送。跨终端最稳的多行键。
Shift+Enter也能换行,但前提是终端把这个组合键正确传过来;若变成直接发送,改用 Ctrl+J
Ctrl+G把当前草稿在 $EDITOR / $VISUAL 里打开。超过两三行就用它。
@模糊搜索文件,选中后把路径/内容附到消息里。
!跑一条本地 shell 命令,并把输出带进对话。
-i / --image附一张图片(比如报错截图)。

写正经需求时别跟终端键位较劲:要么按 Ctrl+G 在编辑器里写,要么把 spec 写进文件让 Codex 读:

Read TASK.md and implement it. Stop and ask before changing the database schema.

输入编辑(readline / Emacs 风格)/ Input editing

输入框遵循 readline 习惯,大部分 shell 编辑手感可以直接迁移过来。

快捷键作用
Ctrl+A到行首
Ctrl+E到行尾
Ctrl+B / Ctrl+F左移 / 右移一个字符
Option+B / Alt+B左移一个词(macOS 要把 Option 配成 Meta)
Option+F / Alt+F右移一个词
Ctrl+U删除光标前全部内容
Ctrl+K删除光标后全部内容
Ctrl+W删除前一个词
Ctrl+Y粘回刚刚删掉的文本
Ctrl+H / Backspace删除前一个字符

自 v0.135.0 起,若在配置里开启 Vim 模式,TUI 还支持 Vim 风格的文本对象编辑,在上面这些 readline 默认键之外增加按词、按行的移动。

推理深度、历史、菜单 / Reasoning depth, history, menus

快捷键作用
Alt+, / Alt+.降低 / 提高下一回合的推理深度(v0.124.0+)
Ctrl+R反向搜索历史输入;Enter 选中、Esc 取消(v0.121.0+)
/ 在输入框里浏览草稿历史
Tab补全 / 命令或路径;Codex 工作时把后续输入排进下一回合
Enter发送,或把指令插入正在运行的回合
Esc关闭菜单,或中断当前任务

做大重构前先按 Alt+. 提高推理深度,给 Codex 更多「思考预算」;做琐碎小改时按 Alt+, 降低深度更快。

常用 slash 命令 / Slash commands

快捷键管编辑,slash 命令管会话。值得记的几个:

命令作用
/keymap打印你这个版本生效的键位(解决所有「到底哪个键」的疑问)
/approvals切换权限模式(部分版本叫 /permissions
/model切换底层模型
/init生成项目上下文文件 AGENTS.md
/diff显示 Codex 产生的工作区 diff
/compact压缩并精简上下文,腾出窗口空间
/review让 Codex 审查当前改动
/exit/quit结束会话

失效排查 / When shortcuts fail

现象原因修复
Option+B/F 输入奇怪字符Option 没有作为 Meta 发送Apple Terminal 勾选 “Use Option as Meta key”;iTerm2 启用 “Esc+“
Shift+Enter 直接发送终端没把组合键传过来改用 Ctrl+J,或用 Ctrl+G 在编辑器里写
Ctrl+S 卡住终端 flow control 暂停了输出Ctrl+Q 恢复;想永久关闭执行 stty -ixon
Esc Esc 没反应输入框非空,或版本太旧先清空输入;用 /keymap 核对
Alt+, / Alt+. 无效版本低于 v0.124.0升级 Codex CLI
Cmd 类快捷键无效你在纯终端,不是应用界面改用终端对应的 Ctrl / Alt 组合

iTerm2 和 Apple Terminal 只要把 Option 映射成 Meta 就都很正常。tmux、screen 和部分 VS Code 集成终端会重映射 meta/alt 键。某个键不对劲时,先在原生 Terminal.app 里试一下,判断到底是 Codex 的问题还是终端的问题。

Codex CLI 和 Claude Code 的差异 / vs Claude Code

两者共用一批 readline 编辑键(Ctrl+ACtrl+ECtrl+R)和「按 Esc 中断」的反应,而且两者都带 Esc Esc 回退。但 slash 命令和产品层键位并不相同:Codex 用 /approvals/keymap,Claude Code 有自己的一套,比如 /terminal-setup。别把一边的键位直接套到另一边。在 Codex 里,/keymap 才是你当前版本的权威清单。更详细的对比见 Codex vs Claude Code

FAQ

问:Codex 里 Esc 和 Ctrl+C 有什么区别? 答:Esc 中断当前模型回合或工具调用,同时保留会话,适合方向跑偏时叫停。Ctrl+C 取消当前输入;在空输入框上连按两次会直接退出会话。两者都不会回滚 Codex 已经改过的文件,所以要用 git diff 或让 Codex 自己撤销。

问:怎么换行而不把 prompt 发出去? 答:按 Ctrl+J,它是跨终端最稳的换行键。Shift+Enter 在终端正确转发组合键时也能换行,但很多终端做不到。超过几行的内容,直接按 Ctrl+G$EDITOR 里写更省事。

问:能不能改一条已经发出去的消息? 答:能。输入框为空时按 Esc Esc 就能改写上一条消息;继续按 Esc 可在历史里继续往前回退,然后按 Enter 从该处分叉。这改的是对话,不是磁盘上的文件。

问:怎么不重启就切换权限模式? 答:按 Shift+Tab 在 Read-only、Auto、Full Access 之间循环,或运行 /approvals(部分版本是 /permissions)直接指定。Auto 是默认,会把写操作限制在工作目录内。

问:哪些终端最容易把 Codex 快捷键搞坏? 答:tmux、screen 和部分 VS Code 集成终端会重映射 meta/alt 键,导致 Option+B/FShift+Enter 失效。iTerm2 和 Apple Terminal 只要开启 “Use Option as Meta key” 就很正常。拿不准时先在原生 Terminal.app 里测,换行统一退回 Ctrl+J

标签: #AI 编程 #Codex #教程