TUI 的设计哲学
OpenCode TUI 的设计深受 Neovim 影响,由 terminal.shop 团队打造。它不仅仅是一个命令行界面,而是一个精心设计的终端应用,具有以下特点:
- 模态操作:类似 Vim 的 Normal/Insert 模式切换
- 键盘优先:所有操作都可以通过键盘完成
- 视觉反馈:丰富的颜色和状态指示
- 响应式布局:适应不同终端尺寸
界面布局
TUI 界面分为几个区域:
┌─────────────────────────────────────────┐
│ OpenCode [model] [mode] │ ← 状态栏
├─────────────────────────────────────────┤
│ │
│ 对话历史区域 │
│ (可滚动) │
│ │
├─────────────────────────────────────────┤
│ > 输入区域 │ ← 输入框
│ │
└─────────────────────────────────────────┘
核心命令体系
斜杠命令
| 命令 | 说明 |
|---|---|
/compact | 压缩对话历史,释放上下文空间 |
/models | 切换 LLM 模型 |
/share | 生成对话分享链接 |
/unshare | 取消分享 |
/undo | 撤销上一次修改 |
/init | 初始化项目 |
/help | 显示帮助 |
/clear | 清空对话历史 |
快捷键
OpenCode 使用 Ctrl+X 作为 leader key,类似 Vim 的 Leader 键:
| 快捷键 | 说明 |
|---|---|
Shift+Tab | 切换 Plan/Build 模式 |
Ctrl+C | 取消当前操作 |
Ctrl+D | 退出 OpenCode |
Ctrl+L | 清屏 |
Ctrl+X + C | 复制选中内容 |
Ctrl+X + V | 粘贴 |
Ctrl+X + F | 文件选择器 |
Ctrl+X + M | 模型选择器 |
PageUp/PageDown | 滚动对话历史 |
主题配置
OpenCode 支持自定义主题。在配置文件中设置:
{
"theme": {
"name": "dracula",
"colors": {
"background": "#282a36",
"foreground": "#f8f8f2",
"accent": "#bd93f9",
"success": "#50fa7b",
"warning": "#f1fa8c",
"error": "#ff5555"
}
}
}
内置主题包括:default、dracula、nord、monokai、solarized。
滚动加速
在对话历史较长时,可以使用滚动加速功能:
- 快速按
PageUp/PageDown会加速滚动 - 按住
Shift+ 方向键可以精细滚动 - 按
Home/End跳转到顶部/底部
编辑器集成
Vim/Neovim
在 Vim 中嵌入 OpenCode:
" 在 split 中打开 OpenCode
nnoremap <leader>oc :terminal opencode<CR>
" 发送当前文件给 OpenCode
nnoremap <leader>os :execute '!opencode --file ' . expand('%')<CR>
VS Code
在 VS Code 终端中直接使用 opencode 命令即可。推荐使用集成终端的快捷键 Ctrl+` 快速打开。
WSL 环境优化
在 Windows WSL 中使用 OpenCode TUI,需要以下优化:
终端选择
推荐使用 Windows Terminal,而非旧版 Console:
# 在 Windows Terminal 设置中配置 WSL profile
{
"commandline": "wsl.exe -d Ubuntu",
"font": {
"face": "JetBrains Mono",
"size": 12
},
"colorScheme": "Dracula"
}
字体配置
安装编程字体以获得最佳体验:
# 在 WSL 中安装字体
sudo apt install fonts-jetbrains-mono
# 或在 Windows 中安装
# 下载 JetBrains Mono 并安装到 Windows
性能优化
WSL2 的终端渲染可能较慢,可以调整:
# 减少动画
{
"tui": {
"animations": false,
"scrollSpeed": 2
}
}
自定义配置
完整配置示例 ~/.config/opencode/config.json:
{
"provider": "anthropic",
"model": "claude-sonnet-4-20250514",
"theme": "dracula",
"tui": {
"lineNumbers": true,
"scrollback": 10000,
"animations": true
},
"keybindings": {
"toggleMode": "shift+tab",
"compact": "ctrl+k",
"filePicker": "ctrl+x f"
}
}