summaryrefslogtreecommitdiffhomepage
path: root/packages/web/src/content/docs/tui.mdx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/web/src/content/docs/tui.mdx')
-rw-r--r--packages/web/src/content/docs/tui.mdx315
1 files changed, 315 insertions, 0 deletions
diff --git a/packages/web/src/content/docs/tui.mdx b/packages/web/src/content/docs/tui.mdx
new file mode 100644
index 000000000..113bad697
--- /dev/null
+++ b/packages/web/src/content/docs/tui.mdx
@@ -0,0 +1,315 @@
+---
+title: TUI
+description: Using the opencode terminal user interface.
+---
+
+import { Tabs, TabItem } from "@astrojs/starlight/components"
+
+opencode provides an interactive terminal interface or TUI for working on your projects with an LLM.
+
+Running opencode starts the TUI for the current directory.
+
+```bash
+opencode
+```
+
+Or you can start it for a specific working directory.
+
+```bash
+opencode /path/to/project
+```
+
+Once you're in the TUI, you can prompt it with a message.
+
+```text
+Give me a quick summary of the codebase.
+```
+
+---
+
+## File references
+
+You can reference files in your messages using `@`. This does a fuzzy file search in the current working directory.
+
+:::tip
+You can also use `@` to reference files in your messages.
+:::
+
+```text "@packages/functions/src/api/index.ts"
+How is auth handled in @packages/functions/src/api/index.ts?
+```
+
+The content of the file is added to the conversation automatically.
+
+---
+
+## Bash commands
+
+Start a message with `!` to run a shell command.
+
+```bash frame="none"
+!ls -la
+```
+
+The output of the command is added to the conversation as a tool result.
+
+---
+
+## Commands
+
+When using the opencode TUI, you can type `/` followed by a command name to quickly execute actions. For example:
+
+```bash frame="none"
+/help
+```
+
+Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x` is the default leader key. [Learn more](/docs/keybinds).
+
+Here are all available slash commands:
+
+---
+
+### compact
+
+Compact the current session. _Alias_: `/summarize`
+
+```bash frame="none"
+/compact
+```
+
+**Keybind:** `ctrl+x c`
+
+---
+
+### details
+
+Toggle tool execution details.
+
+```bash frame="none"
+/details
+```
+
+**Keybind:** `ctrl+x d`
+
+---
+
+### editor
+
+Open external editor for composing messages. Uses the editor set in your `EDITOR` environment variable. [Learn more](#editor-setup).
+
+```bash frame="none"
+/editor
+```
+
+**Keybind:** `ctrl+x e`
+
+---
+
+### exit
+
+Exit opencode. _Aliases_: `/quit`, `/q`
+
+```bash frame="none"
+/exit
+```
+
+**Keybind:** `ctrl+x q`
+
+---
+
+### export
+
+Export current conversation to Markdown and open in your default editor. Uses the editor set in your `EDITOR` environment variable. [Learn more](#editor-setup).
+
+```bash frame="none"
+/export
+```
+
+**Keybind:** `ctrl+x x`
+
+---
+
+### help
+
+Show the help dialog.
+
+```bash frame="none"
+/help
+```
+
+**Keybind:** `ctrl+x h`
+
+---
+
+### init
+
+Create or update `AGENTS.md` file. [Learn more](/docs/rules).
+
+```bash frame="none"
+/init
+```
+
+**Keybind:** `ctrl+x i`
+
+---
+
+### models
+
+List available models.
+
+```bash frame="none"
+/models
+```
+
+**Keybind:** `ctrl+x m`
+
+---
+
+### new
+
+Start a new session. _Alias_: `/clear`
+
+```bash frame="none"
+/new
+```
+
+**Keybind:** `ctrl+x n`
+
+---
+
+### redo
+
+Redo a previously undone message. Only available after using `/undo`.
+
+:::tip
+Any file changes will also be restored.
+:::
+
+```bash frame="none"
+/redo
+```
+
+**Keybind:** `ctrl+x r`
+
+---
+
+### sessions
+
+List and switch between sessions. _Aliases_: `/resume`, `/continue`
+
+```bash frame="none"
+/sessions
+```
+
+**Keybind:** `ctrl+x l`
+
+---
+
+### share
+
+Share current session. [Learn more](/docs/share).
+
+```bash frame="none"
+/share
+```
+
+**Keybind:** `ctrl+x s`
+
+---
+
+### themes
+
+List available themes.
+
+```bash frame="none"
+/themes
+```
+
+**Keybind:** `ctrl+x t`
+
+---
+
+### undo
+
+Undo last message in the conversation. Removes the most recent user message, all subsequent responses, and any file changes.
+
+:::tip
+Any file changes made will also be reverted.
+:::
+
+```bash frame="none"
+/undo
+```
+
+**Keybind:** `ctrl+x u`
+
+---
+
+### unshare
+
+Unshare current session. [Learn more](/docs/share#un-sharing).
+
+```bash frame="none"
+/unshare
+```
+
+---
+
+## Editor setup
+
+Both the `/editor` and `/export` commands use the editor specified in your `EDITOR` environment variable.
+
+<Tabs>
+ <TabItem label="Linux/macOS">
+ ```bash
+ # 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"
+ ```
+
+ To make it permanent, add this to your shell profile;
+ `~/.bashrc`, `~/.zshrc`, etc.
+ </TabItem>
+
+ <TabItem label="Windows (CMD)">
+ ```bash
+ set EDITOR=notepad
+
+ # For GUI editors (VS Code, Cursor, VSCodium, Windsurf, Zed, etc.) include --wait
+ set EDITOR=code --wait
+ ```
+
+ To make it permanent, use **System Properties** > **Environment
+ Variables**.
+ </TabItem>
+
+ <TabItem label="Windows (PowerShell)">
+ ```powershell
+ $env:EDITOR = "notepad"
+
+ # For GUI editors (VS Code, Cursor, VSCodium, Windsurf, Zed, etc.) include --wait
+ $env:EDITOR = "code --wait"
+ ```
+
+ To make it permanent, add this to your PowerShell profile.
+ </TabItem>
+</Tabs>
+
+Popular editor options include:
+
+- `code` - Visual Studio Code
+- `cursor` - Cursor
+- `windsurf` - Windsurf
+- `vim` - Vim editor
+- `nano` - Nano editor
+- `notepad` - Windows Notepad
+- `subl` - Sublime Text
+
+:::note
+Some editors like VS Code need to be started with the `--wait` flag.
+:::
+
+Some editors need command-line arguments to run in blocking mode. The `--wait` flag makes the editor process block until closed.