📚AI 编程官方教程中文版
官方教程中文版个性化

配置快捷键

用 tui.json 调整少数真正影响效率的 OpenCode 快捷键。

OpenCode 的快捷键可以通过 tui.json 自定义。新手不需要把完整快捷键表复制一遍,只改你每天会用、且和终端冲突的少数几个键。

先理解它解决什么问题

快捷键不是为了把所有功能都背下来,而是为了减少高频动作的打断感。新手真正会遇到的问题通常有三个:

  • 不知道怎么快速打开会话列表、模型列表、代理列表。
  • 输入多行提示词时,EnterShift+Enter 行为不符合预期。
  • 终端、tmux、编辑器和 OpenCode 抢同一个快捷键。

因此配置思路应该是“只改高频和冲突”,不是复制一份完整快捷键表。

最小配置

推荐从这几个键开始:

{
  "$schema": "https://opencode.ai/tui.json",
  "keybinds": {
    "leader": "ctrl+x",
    "session_new": "<leader>n",
    "session_list": "<leader>l",
    "model_list": "<leader>m",
    "agent_list": "<leader>a",
    "session_compact": "<leader>c",
    "input_newline": "shift+return,ctrl+return"
  }
}

这段配置覆盖的是高频入口:新会话、会话列表、模型选择、代理选择、压缩上下文和输入换行。

前导键

leader 是组合快捷键的前缀。默认用 ctrl+x,例如 <leader>n 就是先按 ctrl+x,再按 n

建议保留一个前导键,而不是把所有动作都绑定成单键。原因很简单:终端、Shell、编辑器、tmux 都会占用快捷键,前导键可以降低冲突。

禁用冲突键

如果某个快捷键和你的终端或编辑器冲突,把它设为 "none"

{
  "$schema": "https://opencode.ai/tui.json",
  "keybinds": {
    "session_compact": "none"
  }
}

不要为了“完整”复制官方全量 keybinds。完整配置会让你以后看不出自己到底改了什么。

输入区常用键

桌面版提示词输入框支持常见 Readline / Emacs 风格快捷键,这部分通常不用配置:

  • ctrl+a:移动到当前行开头。
  • ctrl+e:移动到当前行末尾。
  • ctrl+b / ctrl+f:向左 / 向右移动一个字符。
  • alt+b / alt+f:向左 / 向右移动一个单词。
  • ctrl+k:删除到行尾。
  • ctrl+u:删除到行首。
  • ctrl+w:删除前一个单词。

这些键和 Shell 输入习惯一致,新手先熟悉它们,比改一大份快捷键配置更有收益。

怎么判断配置有效

改完 tui.json 后,重启 OpenCode 或重新打开 TUI,再验证三件事:

  • <leader>n 能创建新会话。
  • <leader>m 能打开模型选择。
  • 提示词输入区能按你预期换行和提交。

如果某个快捷键没反应,先检查是否被终端或 tmux 截获。OpenCode 收不到按键时,改 OpenCode 配置不会生效。

Shift+Enter

如果 Shift+Enter 不能换行,问题通常不在 OpenCode,而在终端没有发送带修饰键的 Enter 序列。

Windows Terminal 需要在 settings.json 里给 shift+enter 绑定 sendInput,输入值是 \u001b[13;2u。改完后重启终端或新开一个标签页再测试。

macOS 常见终端通常不需要额外配置;如果遇到冲突,优先检查终端自己的快捷键设置。

© Anomaly

最近更新: 2026年5月1日

On this page