---
title: TUI
description: Usa l'interfaccia utente da terminale (TUI) di OpenCode.
---

import { Tabs, TabItem } from "@astrojs/starlight/components"

OpenCode fornisce un'interfaccia interattiva da terminale (TUI) per lavorare sui tuoi progetti con un LLM.

Eseguire OpenCode avvia la TUI per la directory corrente.

```bash
opencode
```

Oppure puoi avviarla per una specifica working directory.

```bash
opencode /path/to/project
```

Una volta nella TUI, puoi inviare un messaggio come prompt.

```text
Give me a quick summary of the codebase.
```

---

## Riferimenti ai file

Puoi riferirti ai file nei messaggi usando `@`. Questo esegue una ricerca fuzzy dei file nella working directory corrente.

:::tip
Puoi anche usare `@` per riferirti ai file nei messaggi.
:::

```text "@packages/functions/src/api/index.ts"
How is auth handled in @packages/functions/src/api/index.ts?
```

Il contenuto del file viene aggiunto automaticamente alla conversazione.

---

## Comandi bash

Inizia un messaggio con `!` per eseguire un comando shell.

```bash frame="none"
!ls -la
```

L'output del comando viene aggiunto alla conversazione come risultato di uno strumento.

---

## Comandi

Quando usi la TUI di OpenCode, puoi digitare `/` seguito dal nome di un comando per eseguire rapidamente azioni. Per esempio:

```bash frame="none"
/help
```

Molti comandi hanno anche una scorciatoia da tastiera che usa `ctrl+x` come tasto leader (predefinito). [Scopri di più](/docs/keybinds).

Ecco tutti i comandi slash disponibili:

---

### connetti

Aggiunge un provider a OpenCode. Ti permette di selezionare tra i provider disponibili e aggiungere le relative chiavi API.

```bash frame="none"
/connect
```

---

### compatta

Compatta la sessione corrente. _Alias_: `/summarize`

```bash frame="none"
/compact
```

**Scorciatoia:** `ctrl+x c`

---

### dettagli

Attiva/disattiva i dettagli di esecuzione degli strumenti.

```bash frame="none"
/details
```

**Scorciatoia:** `ctrl+x d`

---

### editor

Apre un editor esterno per comporre messaggi. Usa l'editor impostato nella variabile d'ambiente `EDITOR`. [Scopri di più](#editor-setup).

```bash frame="none"
/editor
```

**Scorciatoia:** `ctrl+x e`

---

### esci

Esce da OpenCode. _Alias_: `/quit`, `/q`

```bash frame="none"
/exit
```

**Scorciatoia:** `ctrl+x q`

---

### esporta

Esporta la conversazione corrente in Markdown e la apre nell'editor predefinito. Usa l'editor impostato nella variabile d'ambiente `EDITOR`. [Scopri di più](#editor-setup).

```bash frame="none"
/export
```

**Scorciatoia:** `ctrl+x x`

---

### aiuto

Mostra la finestra di aiuto.

```bash frame="none"
/help
```

**Scorciatoia:** `ctrl+x h`

---

### inizializza

Crea o aggiorna il file `AGENTS.md`. [Scopri di più](/docs/rules).

```bash frame="none"
/init
```

**Scorciatoia:** `ctrl+x i`

---

### modelli

Elenca i modelli disponibili.

```bash frame="none"
/models
```

**Scorciatoia:** `ctrl+x m`

---

### nuovo

Avvia una nuova sessione. _Alias_: `/clear`

```bash frame="none"
/new
```

**Scorciatoia:** `ctrl+x n`

---

### rifai

Rifai un messaggio precedentemente annullato. Disponibile solo dopo aver usato `/undo`.

:::tip
Vengono ripristinate anche eventuali modifiche ai file.
:::

Internamente usa Git per gestire le modifiche ai file. Quindi il progetto **deve essere un repository Git**.

```bash frame="none"
/redo
```

**Scorciatoia:** `ctrl+x r`

---

### sessioni

Elenca e passa tra le sessioni. _Alias_: `/resume`, `/continue`

```bash frame="none"
/sessions
```

**Scorciatoia:** `ctrl+x l`

---

### condividi

Condivide la sessione corrente. [Scopri di più](/docs/share).

```bash frame="none"
/share
```

**Scorciatoia:** `ctrl+x s`

---

### temi

Elenca i temi disponibili.

```bash frame="none"
/themes
```

**Scorciatoia:** `ctrl+x t`

---

### ragionamento

Attiva/disattiva la visibilità dei blocchi thinking/reasoning nella conversazione. Quando abilitato, puoi vedere il ragionamento del modello per i modelli che supportano extended thinking.

:::note
Questo comando controlla solo se i blocchi di thinking vengono **mostrati**: non abilita o disabilita le capacità di ragionamento del modello. Per cambiare le capacità di ragionamento effettive, usa `ctrl+t` per ciclare tra le varianti del modello.
:::

```bash frame="none"
/thinking
```

---

### annulla

Annulla l'ultimo messaggio nella conversazione. Rimuove l'ultimo messaggio utente, tutte le risposte successive e qualsiasi modifica ai file.

:::tip
Vengono annullate anche eventuali modifiche ai file.
:::

Internamente usa Git per gestire le modifiche ai file. Quindi il progetto **deve essere un repository Git**.

```bash frame="none"
/undo
```

**Scorciatoia:** `ctrl+x u`

---

### annulla condivisione

Annulla la condivisione della sessione corrente. [Scopri di più](/docs/share#un-sharing).

```bash frame="none"
/unshare
```

---

## Configurazione dell'editor

Sia `/editor` sia `/export` usano l'editor specificato nella variabile d'ambiente `EDITOR`.

<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"
    ```

    Per renderlo permanente, aggiungilo al profilo della shell;
    `~/.bashrc`, `~/.zshrc`, ecc.

  </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
    ```

    Per renderlo permanente, usa **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"
    ```

    Per renderlo permanente, aggiungilo al profilo PowerShell.

  </TabItem>
</Tabs>

Opzioni comuni per l'editor includono:

- `code` - Visual Studio Code
- `cursor` - Cursor
- `windsurf` - Windsurf
- `nvim` - Neovim editor
- `vim` - Vim editor
- `nano` - Nano editor
- `notepad` - Windows Notepad
- `subl` - Sublime Text

:::note
Alcuni editor come VS Code devono essere avviati con il flag `--wait`.
:::

Alcuni editor richiedono argomenti da riga di comando per funzionare in modalità bloccante. Il flag `--wait` fa sì che il processo dell'editor resti in attesa finché non viene chiuso.

---

## Configurazione

Puoi personalizzare il comportamento della TUI tramite `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"
    }
  }
}
```

Questo è separato da `opencode.json`, che configura il comportamento di server/runtime.

`keybinds` viene unito ai valori predefiniti integrati, quindi devi configurare solo le scorciatoie che vuoi modificare.

### Opzioni

- `theme` - Imposta il tema della UI. [Scopri di più](/docs/themes).
- `keybinds` - Personalizza le scorciatoie da tastiera. [Scopri di più](/docs/keybinds).
- `leader_timeout` - Controlla per quanto tempo OpenCode attende dopo il leader key. Default: `2000`.
- `scroll_acceleration.enabled` - Abilita l'accelerazione di scroll in stile macOS per uno scorrimento fluido e naturale. Quando abilitata, la velocità aumenta con gesture rapide e resta precisa con movimenti lenti. **Questa impostazione ha precedenza su `scroll_speed` e lo sovrascrive quando attiva.**
- `scroll_speed` - Controlla la velocità di scorrimento della TUI quando usi i comandi di scroll (minimo: `0.001`, supporta valori decimali). Default: `3`. **Nota: viene ignorata se `scroll_acceleration.enabled` è impostato a `true`.**
- `diff_style` - Controlla il rendering delle diff. `"auto"` si adatta alla larghezza del terminale, `"stacked"` mostra sempre un layout a colonna singola.
- `mouse` - Abilita o disabilita la cattura del mouse nella TUI (default: `true`). Quando è disabilitata, il comportamento nativo del terminale per selezione e scorrimento con il mouse viene preservato.
- `attention` - Configura notifiche desktop e suoni della TUI. Disabilitato per impostazione predefinita.

Usa `OPENCODE_TUI_CONFIG` per caricare un path di configurazione TUI personalizzato.

### Attention

Attention permette alla TUI di avvisarti quando OpenCode aspetta una risposta, richiede l'approvazione di un permesso, incontra un errore di sessione o completa una sessione. Abilitala con `attention.enabled`; gli eventi integrati riproducono un suono quando si verificano. Le notifiche desktop vengono inviate solo quando la finestra del terminale non è in primo piano e non vengono usate per gli eventi subagent.

- `enabled` - Abilita tutte le notifiche e i suoni di Attention. Default: `false`.
- `notifications` - Quando Attention è abilitato, consente alla TUI di inviare notifiche desktop tramite il terminale. Default: `true`.
- `sound` - Quando Attention è abilitato, consente di riprodurre suoni di avviso. Default: `true`.
- `volume` - Volume predefinito dei suoni, da `0` a `1`. Default: `0.4`.
- `sound_pack` - ID del sound pack da usare. Default: `opencode.default`.
- `sounds` - Imposta file audio personalizzati per `default`, `question`, `permission`, `error`, `done` o `subagent_done`. I percorsi possono essere assoluti, URL `file://` o relativi a `tui.json`.

---

## Personalizzazione

Puoi personalizzare vari aspetti della vista TUI usando la palette dei comandi (`ctrl+x h` o `/help`). Queste impostazioni persistono tra i riavvii.

---

#### Visualizzazione nome utente

Attiva/disattiva se lo username appare nei messaggi della chat. Puoi farlo da:

- Palette comandi: cerca "username" o "hide username"
- L'impostazione viene salvata automaticamente e ricordata tra le sessioni TUI
