TUI
OpenCode のターミナルユーザーインターフェースの使い方。
OpenCode は、LLM を使ってプロジェクトに取り組むためのインタラクティブなターミナルインターフェース、つまり TUI を提供します。
OpenCode を実行すると、カレントディレクトリに対して TUI が起動します。
opencodeまたは、特定の作業ディレクトリを指定して起動することもできます。
opencode /path/to/projectTUI に入ったら、メッセージを送ってプロンプトを与えられます。
Give me a quick summary of the codebase.File references
メッセージ内で @ を使ってファイルを参照できます。これはカレントディレクトリ内であいまい検索(fuzzy file search)を行います。
Tip: メッセージ内でファイルを参照するのにも
@を使えます。
How is auth handled in @packages/functions/src/api/index.ts?ファイルの内容は自動的に会話へ追加されます。
設定された参照も @ のオートコンプリートに表示されます。@alias と入力すると参照ルートをコンテキストとして追加でき、@alias/ と入力するとその参照内のファイルをオートコンプリートできます。
Compare our setup with @docs/README.mdBash commands
メッセージを ! で始めると、シェルコマンドを実行します。
!ls -laコマンドの出力は、ツールの実行結果として会話に追加されます。
Commands
OpenCode の TUI を使用しているときは、/ に続けてコマンド名を入力することで、すばやくアクションを実行できます。例えば次のとおりです。
/helpほとんどのコマンドには、デフォルトのリーダーキーである ctrl+x を使ったキーボードショートカットもあります。詳しくはこちら。
利用可能なすべてのスラッシュコマンドは次のとおりです。
connect
OpenCode にプロバイダーを追加します。利用可能なプロバイダーから選択し、その API キーを追加できます。
/connectcompact
現在のセッションをコンパクトにします。Alias: /summarize
/compactKeybind: ctrl+x c
details
ツール実行の詳細表示を切り替えます。
/detailseditor
メッセージを作成するための外部エディタを開きます。EDITOR 環境変数で設定されたエディタを使用します。詳しくはこちら。
/editorKeybind: ctrl+x e
exit
OpenCode を終了します。Aliases: /quit、/q
/exitKeybind: ctrl+x q
export
現在の会話を Markdown にエクスポートし、デフォルトのエディタで開きます。EDITOR 環境変数で設定されたエディタを使用します。詳しくはこちら。
/exportKeybind: ctrl+x x
help
ヘルプダイアログを表示します。
/helpinit
AGENTS.md を作成または更新するためのガイド付きセットアップです。詳しくはこちら。
/initmodels
利用可能なモデルを一覧表示します。
/modelsKeybind: ctrl+x m
new
新しいセッションを開始します。Alias: /clear
/newKeybind: ctrl+x n
redo
以前に取り消したメッセージをやり直します。/undo を使用した後にのみ利用できます。
Tip: ファイルの変更もすべて復元されます。
内部的には Git を使ってファイルの変更を管理します。そのため、プロジェクトは Git リポジトリである必要があります。
/redoKeybind: ctrl+x r
sessions
セッションを一覧表示し、切り替えます。Aliases: /resume、/continue
/sessionsKeybind: ctrl+x l
share
現在のセッションを共有します。詳しくはこちら。
/sharethemes
利用可能なテーマを一覧表示します。
/themesKeybind: ctrl+x t
thinking
会話内の thinking/reasoning ブロックの表示を切り替えます。有効にすると、拡張思考(extended thinking)に対応したモデルについて、モデルの推論プロセスを確認できます。
Note: このコマンドは thinking ブロックを表示するかどうかを制御するだけで、モデルの推論能力を有効化・無効化するものではありません。実際の推論能力を切り替えるには、
ctrl+tを使ってモデルのバリアントを順に切り替えてください。
/thinkingundo
会話の最後のメッセージを取り消します。直近のユーザーメッセージ、それに続くすべての応答、およびファイルの変更を取り除きます。
Tip: 加えられたファイルの変更も元に戻されます。
内部的には Git を使ってファイルの変更を管理します。そのため、プロジェクトは Git リポジトリである必要があります。
/undoKeybind: ctrl+x u
unshare
現在のセッションの共有を解除します。詳しくはこちら。
/unshareEditor setup
/editor コマンドと /export コマンドはいずれも、EDITOR 環境変数で指定されたエディタを使用します。
Linux/macOS
# Example for nano or vim
export EDITOR=nano
export EDITOR=vim
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
# include --wait
export EDITOR="code --wait"これを永続化するには、~/.bashrc や ~/.zshrc などのシェルプロファイルに追記してください。
Windows (CMD)
set EDITOR=notepad
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
# include --wait
set EDITOR=code --waitこれを永続化するには、システムのプロパティ > 環境変数 を使用してください。
Windows (PowerShell)
$env:EDITOR = "notepad"
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
# include --wait
$env:EDITOR = "code --wait"これを永続化するには、PowerShell プロファイルに追記してください。
よく使われるエディタの選択肢は次のとおりです。
code- Visual Studio Codecursor- Cursorwindsurf- Windsurfnvim- Neovim エディタvim- Vim エディタnano- Nano エディタnotepad- Windows メモ帳subl- Sublime Text
Note: VS Code のような一部のエディタは、
--waitフラグを付けて起動する必要があります。
一部のエディタは、ブロッキングモードで実行するためにコマンドライン引数を必要とします。--wait フラグを付けると、エディタのプロセスが閉じられるまでブロックされます。
Configure
TUI の動作は tui.json(または tui.jsonc)でカスタマイズできます。
{
"$schema": "https://opencode.ai/tui.json",
"theme": "opencode",
"leader_timeout": 2000,
"keybinds": {
"leader": "ctrl+x",
"command_list": "ctrl+p"
},
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": false
},
"diff_style": "auto",
"mouse": true,
"attention": {
"enabled": true,
"notifications": true,
"sound": true,
"volume": 0.4,
"sound_pack": "opencode.default",
"sounds": {
"error": "./sounds/error.mp3"
}
}
}これは、サーバー/ランタイムの動作を設定する opencode.json とは別のものです。
keybinds は組み込みのデフォルトとマージされるため、変更したいショートカットだけを設定すれば十分です。
Options
theme- UI テーマを設定します。詳しくはこちら 。keybinds- キーボードショートカットをカスタマイズします。詳しくはこちら 。leader_timeout- リーダーキーの後に OpenCode が待機する時間を制御します。デフォルトは2000。scroll_acceleration.enabled- スムーズで自然なスクロールのために、macOS スタイルのスクロール加速を有効にします。有効にすると、すばやいスクロール操作でスクロール速度が増し、ゆっくりした動きでは精密さを保ちます。この設定はscroll_speedよりも優先され、有効にするとscroll_speedを上書きします。scroll_speed- スクロールコマンド使用時に TUI がスクロールする速さを制御します(最小:0.001、小数値に対応)。デフォルトは3。注意:scroll_acceleration.enabledがtrueに設定されている場合、これは無視されます。diff_style- diff の描画を制御します。"auto"はターミナル幅に合わせて調整し、"stacked"は常に単一カラムのレイアウトで表示します。mouse- TUI でのマウスキャプチャを有効または無効にします(デフォルト:true)。無効にすると、ターミナルのネイティブなマウス選択/スクロール動作が保持されます。attention- TUI のデスクトップ通知とサウンドを設定します。デフォルトでは無効です。
カスタムの TUI 設定パスを読み込むには OPENCODE_TUI_CONFIG を使用してください。
Attention
TUI は、質問、権限、セッションエラー、完了したセッションについて注意(attention)を求めることができます。attention.enabled で有効にします。組み込みイベントはトリガー時にサウンドを再生し、サブエージェント以外のイベントは、ターミナルがフォーカスを失っている(blurred)場合にのみデスクトップ通知を要求します。
enabled- すべての attention 通知とサウンドを有効にします。デフォルトはfalse。notifications- attention が有効なときに、ターミナル経由のデスクトップ通知を許可します。デフォルトはtrue。sound- attention が有効なときに、attention サウンドを許可します。デフォルトはtrue。volume-0から1までのデフォルトのサウンド音量。デフォルトは0.4。sound_pack- 使用するサウンドパック ID。デフォルトはopencode.default。sounds-default、question、permission、error、done、subagent_doneのサウンドファイルを上書きします。パスは絶対パス、file://URL、またはtui.jsonからの相対パスを指定できます。
Customization
コマンドパレット(ctrl+p)を使って、TUI ビューのさまざまな側面をカスタマイズできます。これらの設定は再起動後も保持されます。
Username display
チャットメッセージにユーザー名を表示するかどうかを切り替えます。次の方法でアクセスできます。
- コマンドパレット: "username" または "hide username" を検索します
- 設定は自動的に保持され、TUI セッションをまたいで記憶されます