| --- |
| title: TUI |
| description: Usando la interfaz de usuario del terminal OpenCode. |
| --- |
| |
| import { Tabs, TabItem } from "@astrojs/starlight/components" |
|
|
| OpenCode proporciona una interfaz de terminal interactiva o TUI para trabajar en sus proyectos con un LLM. |
|
|
| Al ejecutar OpenCode se inicia TUI para el directorio actual. |
|
|
| ```bash |
| opencode |
| ``` |
|
|
| O puede iniciarlo para un directorio de trabajo específico. |
|
|
| ```bash |
| opencode /path/to/project |
| ``` |
|
|
| Una vez que esté en TUI, puede indicarlo con un mensaje. |
|
|
| ```text |
| Give me a quick summary of the codebase. |
| ``` |
|
|
| --- |
| |
| |
|
|
| Puede hacer referencia a archivos en sus mensajes usando `@`. Esto realiza una búsqueda difusa de archivos en el directorio de trabajo actual. |
|
|
| :::tip |
| También puede utilizar `@` para hacer referencia a archivos en sus mensajes. |
| ::: |
|
|
| ```text "@packages/functions/src/api/index.ts" |
| How is auth handled in @packages/functions/src/api/index.ts? |
| ``` |
|
|
| El contenido del archivo se agrega a la conversación automáticamente. |
|
|
| --- |
| |
| |
|
|
| Inicie un mensaje con `!` para ejecutar un comando de shell. |
|
|
| ```bash frame="none" |
| !ls -la |
| ``` |
|
|
| El resultado del comando se agrega a la conversación como resultado de la herramienta. |
|
|
| --- |
| |
| |
|
|
| Cuando utilice OpenCode TUI, puede escribir `/` seguido de un nombre de comando para ejecutar acciones rápidamente. Por ejemplo: |
|
|
| ```bash frame="none" |
| /help |
| ``` |
|
|
| La mayoría de los comandos también tienen una combinación de teclas que utiliza `ctrl+x` como tecla principal, donde `ctrl+x` es la tecla principal predeterminada. [Más información](/docs/keybinds). |
|
|
| Aquí están todos los comandos de barra diagonal disponibles: |
|
|
| --- |
| |
| |
|
|
| Agregue un proveedor a OpenCode. Le permite seleccionar entre proveedores disponibles y agregar sus claves API. |
|
|
| ```bash frame="none" |
| /connect |
| ``` |
|
|
| --- |
| |
| |
|
|
| Compacta la sesión actual. _Alias_: `/summarize` |
|
|
| ```bash frame="none" |
| /compact |
| ``` |
|
|
| **Combinación de teclas:** `ctrl+x c` |
|
|
| --- |
| |
| |
|
|
| Alternar detalles de ejecución de la herramienta. |
|
|
| ```bash frame="none" |
| /details |
| ``` |
|
|
| **Combinación de teclas:** `ctrl+x d` |
|
|
| --- |
| |
| |
|
|
| Abra un editor externo para redactar mensajes. Utiliza el editor configurado en su variable de entorno `EDITOR`. [Más información](#editor-setup). |
|
|
| ```bash frame="none" |
| /editor |
| ``` |
|
|
| **Combinación de teclas:** `ctrl+x e` |
|
|
| --- |
| |
| |
|
|
| Salga de OpenCode. _Alias_: `/quit`, `/q` |
|
|
| ```bash frame="none" |
| /exit |
| ``` |
|
|
| **Combinación de teclas:** `ctrl+x q` |
|
|
| --- |
| |
| |
|
|
| Exporte la conversación actual a Markdown y ábrala en su editor predeterminado. Utiliza el editor configurado en su variable de entorno `EDITOR`. [Más información](#editor-setup). |
|
|
| ```bash frame="none" |
| /export |
| ``` |
|
|
| **Combinación de teclas:** `ctrl+x x` |
|
|
| --- |
| |
| |
|
|
| Muestra el cuadro de diálogo de ayuda. |
|
|
| ```bash frame="none" |
| /help |
| ``` |
|
|
| **Combinación de teclas:** `ctrl+x h` |
|
|
| --- |
| |
| |
|
|
| Cree o actualice el archivo `AGENTS.md`. [Más información](/docs/rules). |
|
|
| ```bash frame="none" |
| /init |
| ``` |
|
|
| **Combinación de teclas:** `ctrl+x i` |
|
|
| --- |
| |
| |
|
|
| Listar modelos disponibles. |
|
|
| ```bash frame="none" |
| /models |
| ``` |
|
|
| **Combinación de teclas:** `ctrl+x m` |
|
|
| --- |
| |
| |
|
|
| Iniciar una nueva sesión. _Alias_: `/clear` |
|
|
| ```bash frame="none" |
| /new |
| ``` |
|
|
| **Combinación de teclas:** `ctrl+x n` |
|
|
| --- |
| |
| |
|
|
| Rehacer un mensaje previamente deshecho. Solo disponible después de usar `/undo`. |
|
|
| :::tip |
| También se restaurarán todos los cambios en el archivo. |
| ::: |
|
|
| Internamente, esto utiliza Git para gestionar los cambios de archivos. Entonces tu proyecto **necesita |
| ser un repositorio Git**. |
|
|
| ```bash frame="none" |
| /redo |
| ``` |
|
|
| **Combinación de teclas:** `ctrl+x r` |
|
|
| --- |
| |
| |
|
|
| Enumere y cambie entre sesiones. _Alias_: `/resume`, `/continue` |
|
|
| ```bash frame="none" |
| /sessions |
| ``` |
|
|
| **Combinación de teclas:** `ctrl+x l` |
|
|
| --- |
| |
| |
|
|
| Compartir la sesión actual. [Más información](/docs/share). |
|
|
| ```bash frame="none" |
| /share |
| ``` |
|
|
| **Combinación de teclas:** `ctrl+x s` |
|
|
| --- |
| |
| |
|
|
| Listar temas disponibles. |
|
|
| ```bash frame="none" |
| /theme |
| ``` |
|
|
| **Combinación de teclas:** `ctrl+x t` |
|
|
| --- |
| |
| |
|
|
| Alterna la visibilidad de los bloques de pensamiento/razonamiento en la conversación. Cuando está habilitado, puede ver el proceso de razonamiento del modelo para los modelos que admiten el pensamiento extendido. |
|
|
| :::note |
| Este comando solo controla si se **muestran** los bloques de pensamiento; no habilita ni deshabilita las capacidades de razonamiento del modelo. Para alternar las capacidades de razonamiento reales, use `ctrl+t` para recorrer las variantes del modelo. |
| ::: |
|
|
| ```bash frame="none" |
| /thinking |
| ``` |
|
|
| --- |
| |
| |
|
|
| Deshacer el último mensaje de la conversación. Elimina el mensaje de usuario más reciente, todas las respuestas posteriores y cualquier cambio de archivo. |
|
|
| :::tip |
| Cualquier cambio de archivo realizado también se revertirá. |
| ::: |
|
|
| Internamente, esto utiliza Git para gestionar los cambios de archivos. Entonces tu proyecto **necesita |
| ser un repositorio Git**. |
|
|
| ```bash frame="none" |
| /undo |
| ``` |
|
|
| **Combinación de teclas:** `ctrl+x u` |
|
|
| --- |
| |
| |
|
|
| Dejar de compartir la sesión actual. [Más información](/docs/share#un-sharing). |
|
|
| ```bash frame="none" |
| /unshare |
| ``` |
|
|
| --- |
| |
| |
|
|
| Tanto el comando `/editor` como el `/export` usan el editor especificado en su variable de entorno `EDITOR`. |
|
|
| <Tabs> |
| <TabItem label="Linux/macOS"> |
| ```bash |
| |
| export EDITOR=nano |
| export EDITOR=vim |
|
|
| |
| |
| export EDITOR="code --wait" |
| ``` |
|
|
| Para hacerlo permanente, agréguelo a su perfil de shell; |
| `~/.bashrc`, `~/.zshrc`, etc. |
|
|
| </TabItem> |
|
|
| <TabItem label="Windows (CMD)"> |
| ```bash |
| set EDITOR=notepad |
|
|
| |
| |
| set EDITOR=code --wait |
| ``` |
|
|
| Para hacerlo permanente, use **Propiedades del sistema** > **Entorno |
| Variables**. |
|
|
| </TabItem> |
|
|
| <TabItem label="Windows (PowerShell)"> |
| ```powershell |
| $env:EDITOR = "notepad" |
|
|
| |
| |
| $env:EDITOR = "code --wait" |
| ``` |
|
|
| Para hacerlo permanente, agréguelo a su perfil de PowerShell. |
|
|
| </TabItem> |
| </Tabs> |
|
|
| Las opciones de editor populares incluyen: |
|
|
| - `code` - Código de Visual Studio |
| - `cursor` - Cursor |
| - `windsurf` - Windsurf |
| - `nvim` - Editor Neovim |
| - `vim` - Editor Vim |
| - `nano` - Nanoeditor |
| - `notepad` - Windows Bloc de notas |
| - `subl` - Texto sublime |
|
|
| :::note |
| Algunos editores como VS Code deben iniciarse con el indicador `--wait`. |
| ::: |
|
|
| Algunos editores necesitan argumentos de línea de comandos para ejecutarse en modo de bloqueo. El indicador `--wait` hace que el proceso del editor se bloquee hasta que se cierre. |
|
|
| --- |
| |
| |
|
|
| Puede personalizar el comportamiento de TUI a través de `tui.json` (o `tui.jsonc`). |
|
|
| ```json title="tui.json" |
| { |
| "$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" |
| } |
| } |
| } |
| ``` |
|
|
| Esto es independiente de `opencode.json`, que configura el comportamiento del servidor/tiempo de ejecución. |
|
|
| `keybinds` se combina con los valores predeterminados integrados, así que solo necesitas configurar los atajos que quieras cambiar. |
|
|
| |
|
|
| - `theme`: establece su tema de interfaz de usuario. [Más información](/docs/themes). |
| - `keybinds`: personaliza los atajos de teclado. [Más información](/docs/keybinds). |
| - `leader_timeout`: controla cuánto tiempo espera OpenCode después de la leader key. El valor predeterminado es `2000`. |
| - `scroll_acceleration.enabled`: habilite la aceleración de desplazamiento estilo macOS para un desplazamiento suave y natural. Cuando está habilitado, la velocidad de desplazamiento aumenta con gestos de desplazamiento rápido y se mantiene precisa para movimientos más lentos. **Esta configuración tiene prioridad sobre `scroll_speed` y la anula cuando está habilitada.** |
| - `scroll_speed`: controla la rapidez con la que se desplaza el TUI cuando se utilizan comandos de desplazamiento (mínimo: `0.001`, admite valores decimales). El valor predeterminado es `3`. **Nota: Esto se ignora si `scroll_acceleration.enabled` está configurado en `true`.** |
| - `diff_style`: controla la representación de diferencias. `"auto"` se adapta al ancho del terminal, `"stacked"` siempre muestra un diseño de una sola columna. |
| - `mouse`: habilita o deshabilita la captura del mouse en el TUI (predeterminado: `true`). Cuando está deshabilitada, se conserva el comportamiento nativo del terminal para seleccionar y desplazarse con el mouse. |
| - `attention`: configura las notificaciones de escritorio y los sonidos del TUI. Deshabilitado de forma predeterminada. |
|
|
| Utilice `OPENCODE_TUI_CONFIG` para cargar una ruta de configuración de TUI personalizada. |
|
|
| |
|
|
| Attention permite que el TUI te avise cuando OpenCode necesita que respondas una pregunta, apruebes un permiso, revises un error de sesión o sepas que una sesión terminó. Actívalo con `attention.enabled`; los eventos integrados reproducen sonidos al ocurrir. Las notificaciones de escritorio solo se envían cuando la ventana del terminal no está enfocada y no se usan para eventos de subagent. |
|
|
| - `enabled`: activa todas las notificaciones y sonidos de Attention. El valor predeterminado es `false`. |
| - `notifications`: cuando Attention está activo, permite que el TUI envíe notificaciones de escritorio a través del terminal. El valor predeterminado es `true`. |
| - `sound`: cuando Attention está activo, permite reproducir sonidos de aviso. El valor predeterminado es `true`. |
| - `volume`: volumen predeterminado de los sonidos, de `0` a `1`. El valor predeterminado es `0.4`. |
| - `sound_pack`: ID del sound pack que se usará. El valor predeterminado es `opencode.default`. |
| - `sounds`: define archivos de sonido personalizados para `default`, `question`, `permission`, `error`, `done` o `subagent_done`. Las rutas pueden ser absolutas, URL `file://` o relativas a `tui.json`. |
|
|
| --- |
| |
| |
|
|
| Puede personalizar varios aspectos de la vista TUI usando la paleta de comandos (`ctrl+x h` o `/help`). Estas configuraciones persisten después de los reinicios. |
|
|
| --- |
| |
| |
|
|
| Alterna si tu nombre de usuario aparece en los mensajes de chat. Accede a este a través de: |
|
|
| - Paleta de comandos: busque "nombre de usuario" u "ocultar nombre de usuario" |
| - La configuración persiste automáticamente y se recordará en TUI sesiones |
|
|