Vai al contenuto

Riga di comando e git difftool

OctoEdit ha una superficie di riga di comando piccola e adatta agli script: aprire file (con una posizione del cursore facoltativa), regolare un'esecuzione con qualche opzione e — il pezzo forte — fare da visualizzatore rapido di confronto tra due file per git difftool.

OctoEdit [options] [files...]

I percorsi possono essere relativi o assoluti. Quando viene avviato da una console, --help/--version stampano lì; avviati in qualunque altro modo, compaiono invece in una piccola finestra di dialogo.

Aprire i file

OctoEdit notes.txt src\main.cpp README.md
  • Ogni file si apre in una scheda propria. Un percorso che non esiste ancora si apre come un nuovo buffer non salvato legato a quel nome (salvando si crea il file).
  • Un :riga o :riga:colonna in coda al primo file sposta il cursore (a partire da 1, limitato al documento) — comodo dall'output di compilatori e di grep:
OctoEdit src\main.cpp:120:8
  • Con l'istanza singola attiva (l'impostazione predefinita), un secondo avvio inoltra i suoi file alla finestra in esecuzione e termina.

Opzioni

Opzione Significato
-h, --help Stampa l'uso e termina.
-v, --version Stampa la versione dell'applicazione e termina.
--log <level> Livello minimo di log per questa esecuzione: trace, debug, info, warning o error.
--rendering <mode> Come questa esecuzione compone le sue finestre: gpu (il valore predefinito) o cpu. Vale solo per quell'esecuzione (vedi sotto).
--list-debug-flags Elenca i flag di debug riconosciuti con i valori attuali e termina.
--diff <left> <right> Confronta due file in un visualizzatore passeggero in sola lettura (implica --viewer).
--viewer Istanza di visualizzazione passeggera e in sola lettura (vedi sotto).
--readonly Apre i file indicati in sola lettura (vedi sotto).

--rendering: composizione della finestra per una sola esecuzione

OctoEdit --rendering=cpu

Scegli come questa esecuzione compone le sue finestre — gpu (il valore predefinito) o cpu — e nient'altro. Che cosa significano le due modalità è spiegato in Preferenze ▸ Generale ▸ Rendering della finestra.

  • Vale solo per quell'esecuzione e non viene mai salvato: il prossimo avvio normale torna a quanto dicono le Preferenze.
  • La modalità è decisa prima che la prima finestra esista e non può cambiare mentre l'editor è in esecuzione, quindi copre allo stesso modo la finestra dell'editor e una finestra --viewer / --diff. Una modalità sconosciuta viene segnalata e ignorata.
  • Con l'istanza unica attiva (il valore predefinito), un avvio inoltrato a un editor già aperto gli consegna soltanto i suoi file: la finestra in esecuzione mantiene la modalità con cui è partita, e lì --rendering non cambia nulla.

Se dopo l'avvio la finestra dell'editor non è utilizzabile

Se la finestra compare disegnata male, o non compare affatto, avvia l'editor una volta con --rendering=cpu e poi imposta tu stesso Preferenze ▸ Generale ▸ Rendering della finestra su CPU: l'opzione della riga di comando non viene ricordata, quindi ti fa solo entrare, ed è l'impostazione a rendere la scelta stabile.

Se nemmeno questo è possibile, l'impostazione si può scrivere a mano con l'editor chiuso. Aggiungi alla sezione [app] del file di configurazione:

[app]
rendering\mode=cpu

Il file si trova in:

  • Windows: %APPDATA%\7-bits\OctoEdit.ini
  • macOS: ~/.config/7-bits.eu/OctoEdit.ini
  • Linux: ~/.config/7-bits/OctoEdit.conf

--readonly: aprire file specifici bloccati

OctoEdit --readonly production.conf notes.txt

Apre i file indicati con la modifica disattivata: i comandi che modificano (Taglia, Incolla, Annulla…) appaiono in grigio per quelle schede, mentre Copia continua a funzionare. A differenza di --viewer, questa è un'istanza normale dell'editor: la tua sessione viene ripristinata, puoi aprire e modificare qualsiasi altro documento, e un secondo avvio con --readonly inoltra i suoi file alla finestra in esecuzione, anch'essi bloccati. Due salvaguardie: un file indicato che è già aperto con modifiche non salvate resta modificabile (l'opzione non intrappola mai modifiche che non potresti più salvare), e un percorso indicato che non esiste ancora si apre come un buffer vuoto bloccato.

--diff: una finestra di confronto tra due file

OctoEdit --diff old.txt new.txt

Apre una finestra separata e usa e getta la cui unica scheda è il confronto affiancato dei due file: con colorazione della sintassi, in sola lettura e con tutto il corredo di confronto — navigazione tra le differenze, il righello panoramico, gli interruttori di ignora-spazi-bianchi/maiuscole e di Allineato, e l' unione tramite copia delle modifiche con salvataggio per lato (entrambi gli operandi sono file veri, quindi funzionano tutte e due le direzioni).

  • Sono richiesti esattamente due file esistenti. Un file mancante o una directory vengono segnalati e il processo termina con il codice 2 senza aprire alcuna finestra dell'editor (il confronto tra directory vive nel plugin Confronto di cartelle).
  • Il processo resta vivo finché non chiudi la finestra, poi termina con 0 — che è esattamente ciò che git difftool attende.
  • La finestra è indipendente dal tuo OctoEdit normale: non entra mai nel meccanismo di istanza singola, non carica plugin e non salva nulla (niente sessione, niente disposizione, niente voci di file recenti). Il tuo editor e la sua sessione restano intatti, e qualsiasi numero di finestre --diff può coesistere con essi.
  • L'assistente IA resta disponibile: fa parte del nucleo. Porgere una domanda lì comunica automaticamente all'agente quali due file sono sullo schermo (e gli concede accesso in lettura a entrambi), così «che cosa è cambiato tra questi file?» funziona senz'altro.

Configurarlo come tuo git difftool

# .gitconfig
[diff]
    tool = octoedit
[difftool]
    prompt = false
[difftool "octoedit"]
    cmd = OctoEdit --diff "$LOCAL" "$REMOTE"

Poi, ad esempio:

git difftool HEAD~1 -- src/main.cpp

Tip

Assicurati che OctoEdit.exe sia nel tuo PATH, oppure scrivi il suo percorso completo nella riga cmd =.

--viewer: un visualizzatore usa e getta in sola lettura

OctoEdit --viewer report.log

Un'istanza passeggera per dare un'occhiata rapida a un file, senza disturbare la tua vera sessione di lavoro (implicita in --diff):

  • I file indicati sulla riga di comando si aprono normalmente, poi l'istanza viene bloccata: i buffer sono in sola lettura, File ▸ Nuovo/Apri/Salva e tutti i comandi di Confronta sono disattivati, e nulla può aprire un'altra scheda.
  • Chiudere l'ultima scheda chiude la finestra.
  • Nulla viene conservato: nessun salvataggio o ripristino di sessione, nessuna scrittura della disposizione della finestra, nessuna voce di file recenti.
  • Non viene caricato alcun plugin, quindi si avvia in fretta; le funzionalità del nucleo —colorazione della sintassi, temi, l'assistente IA— restano disponibili.

Codici di uscita

Codice Significato
0 Uscita normale, inclusa una finestra --diff/--viewer chiusa.
2 Richiesta --diff non valida (numero di operandi errato, file mancante, operando che è una directory).