Skip to content

交互模式

CodeBuddy Code 交互式会话中的完整键盘快捷键、输入模式和交互功能参考。

键盘快捷键

通用控制

快捷键描述上下文CodeBuddy 支持
Ctrl+C取消当前输入或生成标准中断✅ 支持
Ctrl+D退出 CodeBuddy Code 会话(输入框为空且无进行中对话时)EOF 信号,连按两次退出✅ 支持
Ctrl+L清除终端屏幕保留对话历史✅ 支持
Ctrl+O切换详细输出显示详细的工具使用和执行信息✅ 支持
Ctrl+R反向搜索命令历史交互式搜索之前的命令✅ 支持
Ctrl+V (macOS/Linux) 或 Alt+V (Windows)从剪贴板粘贴文本或图片;Windows 上推荐用 Alt+V 获得更稳定的大段文本粘贴体验粘贴文本、图片或图片文件路径✅ 支持
Up/Down 方向键导航命令历史调用之前的输入;队列中存在排队消息时,Up 会优先把排队消息拉回输入框编辑✅ 支持
Esc + Esc回退代码/对话将代码和/或对话恢复到之前的状态 (需在输入框为空时连续按两次)✅ 支持
Tab切换思考模式在思考开启和思考关闭之间切换✅ 支持
Shift+Tab (所有平台,Windows 同时支持 Alt+M)切换权限模式defaultbypassPermissionsacceptEditsauto(可用时)、plandelegate 之间循环✅ 支持
Option+P (macOS) 或 Alt+P (Windows/Linux)切换模型快速打开模型选择面板✅ 支持

空白会话可用 /agent-mode 切换主 Agent 模式(标准 / PTC / 极简 / 创造)。空输入且仍可切换时,输入框下提示 /agent-mode to switch(不出现在权限提示那一行)。选择写入 lastUsed,下次启动沿用。这与 Shift+Tab权限模式循环不是一回事。对话开始后模式锁定:该提示消失,再输入 /agent-mode 只说明无法切换,需 /clear 新开。WorkBuddy 不提供该入口。

说明:

  • Esc + Esc 回退功能已支持:当输入框内容为空时,连续按两次 ESC 键可激活 /rewind 功能,快速回退代码或对话到之前的状态
  • Tab 键在 CodeBuddy Code 中主要用于自动补全,扩展思考模式的切换功能部分支持
  • Shift+Tab 用于切换权限模式(所有平台通用,Windows 同时支持 Alt+M 作为别名)。当前循环顺序为:default → bypassPermissions → acceptEdits → auto(可用时)→ plan → delegatedontAsk 不在键盘循环中,需要通过 --permission-mode dontAsk 或 settings 进入。可通过 ~/.codebuddy/keybindings.json 自定义

多行输入

方法快捷键上下文CodeBuddy 支持
快速转义\ + Enter在所有终端中工作✅ 支持
macOS 默认Option+EntermacOS 上的默认设置✅ 支持
终端设置Shift+Enter执行 /terminal-setup✅ 支持
控制序列Ctrl+J多行的换行字符✅ 支持
粘贴模式直接粘贴用于代码块、日志✅ 支持

快速命令

快捷键描述注释CodeBuddy 支持
# 在开头记忆快捷方式 - 添加到 CODEBUDDY.md提示选择文件✅ 支持
/ 在开头斜杠命令参见 斜杠命令✅ 支持
! 在开头Bash 模式直接运行命令并将执行输出添加到会话;在此模式下按 Shift+Tab 可切换到本地 shell 子模式(命令不进入模型上下文)✅ 支持
@文件路径提及触发文件路径自动补全✅ 支持

编辑快捷键

快捷键描述CodeBuddy 支持
Ctrl+A移动到行首✅ 支持
Ctrl+E移动到行尾✅ 支持
Ctrl+K删除从光标到行尾✅ 支持
Ctrl+U删除从行首到光标✅ 支持
Ctrl+W删除前一个单词✅ 支持
Ctrl+Y复制最后一条 AI 回复到剪贴板✅ 支持
Alt/Option+Backspace删除前一个单词✅ 支持
Alt/Option+Delete删除下一个单词✅ 支持
Alt/Option+Left移动到上一个单词✅ 支持
Alt/Option+Right移动到下一个单词✅ 支持
Ctrl+Left移动到行首✅ 支持
Ctrl+Right移动到行尾✅ 支持
Ctrl+G打开外部编辑器编辑提示词✅ 支持

Vim 编辑器模式

使用 /vim 命令启用 vim 风格编辑,或通过 /config 永久配置。

模式切换

命令操作从模式CodeBuddy 支持
Esc进入 NORMAL 模式INSERT✅ 支持
i在光标前插入NORMAL✅ 支持
I在行首插入NORMAL✅ 支持
a在光标后插入NORMAL✅ 支持
A在行尾插入NORMAL✅ 支持
o在下方打开新行NORMAL✅ 支持
O在上方打开新行NORMAL✅ 支持

导航 (NORMAL 模式)

命令操作CodeBuddy 支持
h/j/k/l向左/下/上/右移动✅ 支持
w下一个单词✅ 支持
e单词末尾✅ 支持
b上一个单词✅ 支持
0行首✅ 支持
$行尾✅ 支持
^第一个非空白字符✅ 支持
gg输入开始✅ 支持
G输入结束✅ 支持

编辑 (NORMAL 模式)

命令操作CodeBuddy 支持
x删除字符✅ 支持
dd删除行✅ 支持
D删除到行尾✅ 支持
dw/de/db删除单词/到末尾/到开头✅ 支持
cc修改行✅ 支持
C修改到行尾✅ 支持
cw/ce/cb修改单词/到末尾/到开头✅ 支持
.重复上次修改✅ 支持

命令历史

CodeBuddy Code 为当前会话维护命令历史:

  • 历史记录按工作目录存储
  • 使用 /clear 开启全新对话(旧对话可通过 /resume 恢复)
  • 使用 Up/Down 方向键导航 (参见上面的键盘快捷键)
  • 注意:历史扩展 (!) 默认禁用

编辑排队中的消息

当 Agent 正在响应时,你输入并回车的消息会进入排队,显示在输入框上方。此时输入框为空,按 Up 方向键即可把排队中的消息拉回输入框继续编辑(多条排队消息会按发送顺序合并,以换行拼接):

  • 输入框为空且有可编辑排队消息时,会显示「Press ↑ to edit queued messages」提示
  • 系统注入的排队项(异步任务通知、频道消息、队友消息等)不会被拉回输入框,会保留在队列中继续自动处理
  • 已经在用 Up/Down 回溯历史时,方向键仍按历史导航处理,不会打断

使用 Ctrl+R 反向搜索

Ctrl+R 交互式搜索您的命令历史:

  1. 开始搜索:按 Ctrl+R 激活反向历史搜索
  2. 输入查询:输入文本以在之前的命令中搜索 - 搜索词将在匹配结果中高亮显示
  3. 导航匹配:再次按 Ctrl+R 循环浏览更早的匹配项
  4. 接受匹配:
    • TabEsc 接受当前匹配并继续编辑
    • Enter 接受并立即执行命令
  5. 取消搜索:
    • Ctrl+C 取消并恢复原始输入
    • 在空搜索时按 Backspace 取消

搜索显示匹配的命令并高亮搜索词,方便查找和重用之前的输入。

后台 Bash 命令

CodeBuddy Code 支持在后台运行 bash 命令,允许您在长时间运行的进程执行时继续工作。

后台运行的工作原理

当 CodeBuddy Code 在后台运行命令时,它会异步运行命令并立即返回后台任务 ID。CodeBuddy Code 可以在命令继续在后台执行时响应新的提示。

要在后台运行命令,您可以:

  • 提示 CodeBuddy Code 在后台运行命令
  • Ctrl+B 将常规 Bash 工具调用移至后台。(Tmux 用户必须按两次 Ctrl+B,因为 tmux 的前缀键。)

主要功能:

  • 输出被缓冲,CodeBuddy 可以使用 TaskOutput 工具检索它
  • 后台任务具有唯一 ID,用于跟踪和输出检索
  • CodeBuddy Code 退出时,后台任务会自动清理

常见的后台命令:

  • 构建工具 (webpack, vite, make)
  • 包管理器 (npm, yarn, pnpm)
  • 测试运行器 (jest, pytest)
  • 开发服务器
  • 长时间运行的进程 (docker, terraform)

使用 ! 前缀的 Bash 模式

通过在输入前加上 ! 前缀直接运行 bash 命令,无需通过 CodeBuddy:

bash
! npm test
! git status
! ls -la

Bash 模式:

  • 将命令及其输出添加到对话上下文中
  • 显示实时进度和输出
  • 支持相同的 Ctrl+B 后台运行长时间运行的命令
  • 不需要 CodeBuddy 解释或批准命令

这对于快速 shell 操作同时保持对话上下文非常有用。

本地 shell 子模式(命令不进入模型上下文)

有时你只是想在使用 CodeBuddy 的同时,在终端里顺手跑几条命令(git statuslspwd 等),并不希望这些命令污染模型的对话上下文。为此,Bash 模式下提供一个「本地 shell」子模式。

进入方式:先输入 ! 进入 Bash 模式,再按 Shift+Tab 切入本地 shell 子模式;提示符会变成不同颜色(青色/teal)以区分。再次按 Shift+Tab 可切回普通 Bash 模式。

bash
! 进入 Bash 模式(提示符为品红色,命令会进入模型上下文)
# 在 Bash 模式下按 Shift+Tab → 提示符变青色,进入本地 shell 子模式
! git status   # 本地 shell 子模式:正常执行并展示结果,但不进入模型上下文

本地 shell 子模式与普通 Bash 模式的区别:

行为普通 Bash 模式(!本地 shell 子模式(! + Shift+Tab
在 TUI 中展示命令与输出
命令/输出进入模型上下文(下一轮请求携带)
写入会话记录(--continue / --resume 时回放)
提示符颜色品红青色/teal

说明:

  • 命令与输出仅在当前 TUI 会话中瞬态展示;模型看不到它们,续聊或恢复会话时也不会回放。它们从不进入会话历史(既不入模型上下文,也不写 JSONL),因此 /btw、上下文压缩、/fork 同样看不到本地 shell 内容。
  • 瞬态展示会在当前实时会话内保留(窗口缩放、界面重挂、Ctrl+O 详细视图都能继续看到),但保留是有上限的进程内展示,不落盘。现有会话结束回调(如 /clear)或已提交的对话回退会清空本地回显;普通上下文压缩不会主动清空回显。离开当前会话后,旧命令的迟到输出不会重新出现。
  • 本地 shell 不接受图片附件;提交含图片的草稿时会提示并保留草稿,不会回落为模型对话。本地模式下 Tab 不会把命令加入模型消息队列。
  • 本地命令召回仅保留在当前运行的内存中:可用 Up/DownCtrl+R 召回本地命令和模式,但不会写入输入历史文件,重启 CLI 后不再保留。普通 Bash 和聊天输入的历史召回仍按原有规则持久化。
  • 选择 Shift+Tab 而非再次输入 ! 或普通 Tab! 是常见 shell 字符(!!!$),普通 Tab 另有用途,而 Shift+Tab 在 Bash 模式下本就空闲、且不是可输入字符,因此不会与命令输入冲突。
  • 在空输入下按退格键可直接退出 Bash / 本地 shell 模式,回到普通对话输入。

权限模式

CodeBuddy Code 支持多种权限模式来控制工具使用的授权方式:

可用模式

模式描述快捷键切换
普通模式 (默认)根据权限规则询问工具使用确认Shift+Tab
自动接受编辑模式自动批准文件编辑操作 (Edit/Write),其他工具仍需确认Shift+Tab
跳过权限模式绕过所有权限检查。建议仅在无互联网访问的沙箱中使用Shift+Tab
计划模式AI 将制定计划并等待批准后再执行Shift+Tab

切换权限模式

  • 使用 Shift+Tab 在模式之间切换(所有平台通用,Windows 同时支持 Alt+M 别名)。可通过 ~/.codebuddy/keybindings.json 自定义快捷键
  • 使用 --permission-mode 命令行参数指定启动模式:
    bash
    codebuddy --permission-mode acceptEdits
    codebuddy --permission-mode bypassPermissions
    codebuddy --permission-mode plan
  • settings.json 中设置默认模式:
    json
    {
      "permissions": {
        "defaultMode": "acceptEdits"
      }
    }

权限规则

权限模式与权限规则结合使用,以提供细粒度控制。参见 IAM 文档 了解配置权限规则的详细信息。

相关文档


提示:在交互式会话中随时输入 ? 可查看可用的快捷键和命令。使用 /help 命令获取更多帮助信息。