Skip to content

OpenCode TUI 的所有快捷键都可以通过 tui.json 配置文件自定义。本文提供完整的键位参考表、Leader 键说明,以及在 Windows Terminal 等特殊终端中配置 Shift+Enter 的方法。

OpenCode 使用 tui.json 配置文件自定义快捷键。

json
{
  "$schema": "https://opencode.ai/tui.json",
  "keybinds": {
    "leader": "ctrl+x",
    "session_new": "<leader>n",
    "session_list": "<leader>l"
  }
}

Leader 键

OpenCode 使用 leader 键避免与终端快捷键冲突。

默认 Leader 键为 ctrl+x。大多数操作需要先按 Leader 键,再按功能键。例如新建会话:先按 ctrl+x,再按 n

快捷键中用 <leader> 表示 Leader 键前缀。


完整键位参考

应用与界面

操作默认快捷键
退出ctrl+c,ctrl+d,<leader>q
打开编辑器<leader>e
主题列表<leader>t
侧边栏开关<leader>b
状态视图<leader>s

会话管理

操作默认快捷键
导出会话<leader>x
新建会话<leader>n
会话列表<leader>l
会话时间线<leader>g
中断会话escape
压缩会话<leader>c
子代理会话导航<leader>down, right, left, up

消息浏览

操作默认快捷键
向上翻页pageup,ctrl+alt+b
向下翻页pagedown,ctrl+alt+f
向上滚行ctrl+alt+y
向下滚行ctrl+alt+e
向上半页ctrl+alt+u
向下半页ctrl+alt+d
回到顶部ctrl+g,home
跳到底部ctrl+alt+g,end
复制消息<leader>y
撤销<leader>u
重做<leader>r
切换折叠<leader>h

模型与 Agent

操作默认快捷键
模型列表<leader>m
切换最近模型f2
反向切换最近模型shift+f2
命令列表ctrl+p
Agent 列表<leader>a
切换下一个 Agenttab
切换上一个 Agentshift+tab

输入框编辑

操作默认快捷键
提交消息return
换行shift+return,ctrl+return,alt+return,ctrl+j
清空输入ctrl+c
粘贴ctrl+v
移到行首ctrl+a
移到行尾ctrl+e
删除到行尾ctrl+k
删除到行首ctrl+u
删除单词(向后)ctrl+w,ctrl+backspace,alt+backspace
删除单词(向前)alt+d,alt+delete,ctrl+delete
撤销输入ctrl+-,super+z
重做输入ctrl+.,super+shift+z
向前移动单词alt+f,alt+right,ctrl+right
向后移动单词alt+b,alt+left,ctrl+left

禁用快捷键

将键值设为 "none" 即可禁用:

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

桌面应用快捷键

OpenCode 桌面版输入框内置 Readline/Emacs 风格快捷键,目前不支持通过 opencode.json 配置:

快捷键动作
ctrl+a移到当前行行首
ctrl+e移到当前行行尾
ctrl+b向后移动一个字符
ctrl+f向前移动一个字符
alt+b向后移动一个单词
alt+f向前移动一个单词
ctrl+d删除光标下的字符
ctrl+k删除到行尾
ctrl+u删除到行首
ctrl+w删除上一个单词
alt+d删除下一个单词
ctrl+g取消弹出框 / 中止运行中的响应

配置 Shift+Enter(Windows Terminal)

某些终端默认不发送修饰键 + Enter 的组合,需要手动配置。

打开 Windows Terminal 的 settings.json(路径:%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json)。

在根级 actions 数组中添加:

json
{
  "command": {
    "action": "sendInput",
    "input": ""
  },
  "id": "User.sendInput.ShiftEnterCustom"
}

在根级 keybindings 数组中添加:

json
{
  "keys": "shift+enter",
  "id": "User.sendInput.ShiftEnterCustom"
}

保存后重启 Windows Terminal 或打开新标签页生效。


常见问题

Q: 我想把 Leader 键从 ctrl+x 改成其他键,会影响哪些快捷键?

A: 所有使用 <leader> 前缀的快捷键都会跟着变。修改 "leader" 字段即可,无需逐一修改引用 <leader> 的条目。

Q: 如何让 OpenCode 的快捷键不与 tmux 冲突?

A: 更改 leader 键为 tmux 不使用的组合,或者将冲突的操作设为 "none" 禁用,再重新绑定到其他键。

Q: tui.json 文件放在哪里?

A: 默认位置是 ~/.config/opencode/tui.json(全局配置),或者项目目录下的 .opencode/tui.json(项目级配置)。