OpenCode 快捷键
OpenCode 提供了一套完整的快捷键系统,支持通过 tui.json 自定义,从而提升终端操作效率。
快捷键配置
所有快捷键均通过 tui.json 进行配置:
{
"$schema": "https://opencode.ai/tui.json",
"keybinds": {
"leader": "ctrl+x",
"app_exit": "ctrl+c,ctrl+d,<leader>q",
"editor_open": "<leader>e",
"theme_list": "<leader>t",
"sidebar_toggle": "<leader>b",
"status_view": "<leader>s",
"session_new": "<leader>n",
"session_list": "<leader>l",
"session_export": "<leader>x",
"messages_copy": "<leader>y",
"messages_undo": "<leader>u",
"messages_redo": "<leader>r",
"model_list": "<leader>m",
"agent_list": "<leader>a",
"command_list": "ctrl+p",
"agent_cycle": "tab",
"agent_cycle_reverse": "shift+tab",
"input_submit": "return",
"input_newline": "shift+return,ctrl+return",
"input_clear": "ctrl+c"
}
}
说明:
- 每个字段对应一个操作
- 多个快捷键用逗号分隔
- 支持组合键(如 ctrl、shift、alt)
前导键(Leader Key)
OpenCode 使用 前导键(leader) 来组织快捷键,避免与终端冲突。
默认前导键:
ctrl+x
使用方式示例:
- 新建会话:ctrl+x → n
- 打开主题:ctrl+x → t
- 导出会话:ctrl+x → x
您可以自定义前导键:
{
"keybinds": {
"leader": "ctrl+a"
}
}
禁用快捷键
如果某个快捷键与终端冲突,可以将其禁用:
{
"$schema": "https://opencode.ai/tui.json",
"keybinds": {
"session_compact": "none"
}
}
说明:
- "none" 表示禁用该功能的快捷键
常用快捷键分类
会话管理
- 新建会话:<leader>n
- 会话列表:<leader>l
- 导出会话:<leader>x
- 压缩上下文:<leader>c
消息操作
- 复制消息:<leader>y
- 撤销:<leader>u
- 重做:<leader>r
模型与代理
- 模型列表:<leader>m
- 代理列表:<leader>a
- 切换代理:Tab
界面控制
- 主题切换:<leader>t
- 侧边栏:<leader>b
- 状态视图:<leader>s
输入框快捷键(Readline 风格)
OpenCode 输入框支持类似 Emacs / Readline 的快捷键:
| 快捷键 | 操作 |
|---|---|
| ctrl+a | 移动到行首 |
| ctrl+e | 移动到行尾 |
| ctrl+b | 向左移动字符 |
| ctrl+f | 向右移动字符 |
| alt+b | 向左移动单词 |
| alt+f | 向右移动单词 |
| ctrl+d | 删除字符 |
| ctrl+k | 删除到行尾 |
| ctrl+u | 删除到行首 |
| ctrl+w | 删除前一个单词 |
| alt+d | 删除后一个单词 |
| ctrl+t | 交换字符 |
| ctrl+g | 取消操作 |
Shift+Enter 配置(重要)
部分终端默认不支持 Shift+Enter,需要手动配置。
Windows Terminal
编辑配置文件:
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
添加 actions:
"actions": [
{
"command": {
"action": "sendInput",
"input": "\u001b[13;2u"
},
"id": "User.sendInput.ShiftEnterCustom"
}
]
添加 keybindings:
"keybindings": [
{
"keys": "shift+enter",
"id": "User.sendInput.ShiftEnterCustom"
}
]
保存后重启终端即可生效。
总结
- 快捷键完全可自定义
- 推荐使用 leader 统一管理
- 支持 Emacs 风格输入操作
- 可通过 none 禁用冲突快捷键
合理配置快捷键可以显著提升 OpenCode 在终端中的使用效率。
点我分享笔记