快捷键与终端按键
配置 TUI 键位、leader、Windows 差异和 Shift+Enter,并区分桌面输入快捷键。
TUI 快捷键在 tui.json 的 keybinds 配置,与内置默认合并。只写要修改的键即可,不需要复制完整默认表。
Leader 与键值格式
默认 leader 为 ctrl+x,例如先按它再按 n 开启会话。leader_timeout 默认 2000 毫秒。
一个值可以是单个快捷键、英文逗号分隔的多个快捷键或数组;高级对象支持 key、event、preventDefault、fallthrough。设置 "none" 或 false 可以禁用一个绑定。
{
"$schema": "https://opencode.ai/tui.json",
"keybinds": {
"messages_copy": ["<leader>y", "ctrl+shift+c"],
"input_paste": {
"key": "ctrl+v",
"preventDefault": false
}
}
}常用 TUI 默认键
| 配置键 | 默认绑定 |
|---|---|
command_list | ctrl+p |
editor_open | <leader>e |
theme_list | <leader>t |
sidebar_toggle | <leader>b |
status_view | <leader>s |
session_new / session_list | <leader>n / <leader>l |
session_export / session_timeline | <leader>x / <leader>g |
session_interrupt / session_compact | escape / <leader>c |
model_list | <leader>m |
model_cycle_recent / reverse | f2 / shift+f2 |
agent_list | <leader>a |
agent_cycle / reverse | tab / shift+tab |
variant_cycle | ctrl+t |
messages_copy | <leader>y |
messages_undo / messages_redo | <leader>u / <leader>r |
input_submit | return |
input_newline | shift+return,ctrl+return,alt+return,ctrl+j |
表中 reverse 对应完整键 model_cycle_recent_reverse 和 agent_cycle_reverse。Agents 概念页使用 switch_agent 这一称呼,实际 Keybinds 表列出 agent_cycle;配置键以这里的专门表为准。
子会话使用 <leader>down、right、left、up,详见子会话导航。按键可能在不同界面上下文承担不同动作,不能只按键名推断当前会执行什么。
输入与浏览
常见输入操作包括 ctrl+a/ctrl+e 到行首/行尾,ctrl+b/ctrl+f 左右移动字符,ctrl+k/ctrl+u 删除到行尾/行首,ctrl+w 删除前一个词。
消息浏览可用 pageup/pagedown、ctrl+alt+u/ctrl+alt+d 半页滚动,ctrl+g 或 home 到开头,ctrl+alt+g 或 end 到末尾。完整默认表还有选择、历史、弹窗和 which-key 导航,应按实际面板查询,而不是将消息键位套到输入编辑中。
Windows 差异
原生 Windows 未显式配置时,input_undo 默认增加 ctrl+z,完整值为 ctrl+z,ctrl+-,super+z;terminal_suspend 强制 none,因为原生 Windows 终端不支持 POSIX suspend。
某些终端不会发送 Shift+Enter 修饰键。Windows Terminal 可在自己的 settings.json 中为根 actions 和 keybindings 添加以下片段(与现有数组合并,不覆盖其他设置):
{
"actions": [
{
"command": {
"action": "sendInput",
"input": "\u001b[13;2u"
},
"id": "User.sendInput.ShiftEnterCustom"
}
],
"keybindings": [
{
"keys": "shift+enter",
"id": "User.sendInput.ShiftEnterCustom"
}
]
}保存后重启终端或打开新标签。它是 Windows Terminal 配置,不应放入 tui.json。
桌面输入不同
桌面应用支持内置 Readline/Emacs 风格输入快捷键,官方说明目前不能通过 opencode.json 配置。比如桌面 ctrl+t 交换字符,而 TUI 的同键用于 variants;桌面 ctrl+g 取消弹出层或中止响应。跨入口使用时先确认焦点和所在客户端。