426 lines
10 KiB
Text
426 lines
10 KiB
Text
---
|
|
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
|