文档
推荐给好友,福利领不停!好友同步开通最高 1000 万词元额度 · 后续消费分佣最高 30%。
+50万 Token生成链接

键位

CrabCode 终端 UI 的快捷键体系。默认键位 + 用户自定义。

是什么

CrabCode 自带一套 keybinding 引擎:每个 UI 动作(提交、撤销、补全、确认、滚动等)有唯一的 action 名,可以绑定到一个或多个键组合。用户在 ~/.crabcode/keybindings.json 里写自定义会覆盖默认。

何时会看到这个文档

  • 在 TUI 里输入 /help 查看键位标签时点入
  • 编辑 keybindings.json 时查参考

默认核心键位(节选)

按 context 组织。同一个键在不同 context 下可以触发不同动作。

Global(全局)

Action说明
Ctrl+Capp:interrupt打断当前模型输出;连按两次退出
Ctrl+Dapp:exit退出
Ctrl+Lapp:redraw重绘屏幕
Ctrl+Tapp:toggleTodos切换 todo 面板
Ctrl+Oapp:toggleTranscript切换 transcript 显示
Ctrl+Rhistory:search搜索历史会话

Chat(聊天输入)

Action说明
Enterchat:submit提交输入
Escchat:cancel取消 / 关闭弹层
/ history:previous / history:next上 / 下翻历史输入
Shift+Tabchat:cycleMode切换交互模式(Windows 部分场景为 Meta+M
Meta+Pchat:modelPicker打开模型选择器
Meta+Tchat:thinkingToggle切换思考强度
Meta+Ochat:fastMode切换 Fast 模式
Ctrl+_Ctrl+Shift+-chat:undo撤销输入
Ctrl+GCtrl+X Ctrl+Echat:externalEditor用外部编辑器编辑当前 prompt
Ctrl+Schat:stash暂存当前输入

Autocomplete(补全弹层)

Action
Tabautocomplete:accept
Escautocomplete:dismiss
/ autocomplete:previous / autocomplete:next

完整默认表可以在 TUI 里 /help → 键位标签查看。

自定义

编辑 ~/.crabcode/keybindings.json

json
{
  "bindings": {
    "chat:submit": ["enter", "cmd+enter"],
    "chat:cancel": ["escape"],
    "app:interrupt": ["ctrl+g"]
  }
}
{
  "bindings": {
    "chat:submit": ["enter", "cmd+enter"],
    "chat:cancel": ["escape"],
    "app:interrupt": ["ctrl+g"]
  }
}

支持的修饰键:ctrl / cmd / meta / alt / shift。 支持 chord(双键序列):["ctrl+x ctrl+s"](用空格分隔表示连续按两次)。

限制

  • 保留键不能改Ctrl+CCtrl+DCtrl+M(终端把 Ctrl+M 等同 Enter,绑过去会冲突)—— 见 src/keybindings/reservedShortcuts.ts
  • 被终端 / OS 拦截的键Ctrl+Z(SIGTSTP)、Ctrl+\(SIGQUIT)等;这些可以写,但终端不会把事件传给应用
  • 冲突检测:启动时若发现重复绑定,crabcode --debug 会在日志里提示

相关