Italiano - vroby65/zepto GitHub Wiki
Zepto è un editor di testo da terminale, scritto interamente in C, progettato per essere estremamente leggero, auto-contenuto e senza dipendenze esterne.
Non utilizza librerie come ncurses
, ma si affida direttamente alle sequenze di escape ANSI e al raw mode del terminale per ottenere una gestione precisa e minimale dell’interfaccia.
Lo scopo principale di Zepto è fornire un editor di testo:
- Compatto: dimensioni inferiori a 20 KB
- Portabile: funziona ovunque esista una shell POSIX compatibile
- Funzionale: include undo/redo, copia/incolla, evidenziazione della sintassi, barra di stato, numeri di linea, selezione del testo
- Accessibile: scritto in puro C, facilmente leggibile e modificabile
Zepto imposta il terminale in modalità raw, disabilitando la canonica interpretazione dei caratteri (ICANON
) e l'eco (ECHO
).
Questo permette di leggere i tasti uno per uno, inclusi i caratteri di controllo (Ctrl+X
, Esc
, ecc.), senza aspettare un \n
.
tcgetattr(0, &orig);
cfmakeraw(&raw);
tcsetattr(0, TCSANOW, &raw);
Tutto il disegno dello schermo avviene manualmente con codici di escape ANSI:
Funzione | Codice ANSI |
---|---|
Spostamento cursore |
\033[H , \033[<r>;<c>H
|
Cancellazione linea | \033[K |
Inversione colore (selez.) |
\033[7m , \033[0m
|
Colori testo |
\033[31m , \033[34m
|
Nascondi/mostra cursore |
\033[?25l , \033[?25h
|
La sintassi è definita tramite file di configurazione nella cartella:
~/.config/zt/languages/
Ogni file ha estensione .config
e contiene righe del tipo:
if 31
while 34
return 32
Quando Zepto rileva l'estensione del file (es. .c
, .py
...), carica il file relativo (c.config
, python.config
, ecc.) e applica il colore corrispondente alle parole chiave trovate nel testo.
L'evidenziazione è al volo, integrata nel rendering del buffer, senza modificare il contenuto originale.
Le modifiche sono registrate in uno stack di strutture change
, che memorizzano:
- Posizione
- Contenuto precedente e successivo
- Lunghezza prima/dopo la modifica
La funzione record_change()
è chiamata ogni volta che il buffer viene modificato.
Con Ctrl+Z
si effettua l’undo, con Ctrl+Y
il redo.
Zepto supporta la selezione di testo tramite Shift + Frecce
.
Comandi:
-
Ctrl+C
→ copia -
Ctrl+X
→ taglia -
Ctrl+V
→ incolla
La selezione è visualizzata in modalità inversa (\033[7m
).
-
Ricerca nel testo: con
F7
, viene richiesto l’input nella barra di stato -
Salvataggio:
F2
salva,F10
salva ed esce -
Navigazione avanzata:
Home
,End
,PageUp
,PageDown
,Ctrl+Frecce
- Numeri di riga: margine sinistro colorato con il numero della riga corrente
Per compilare Zepto, è sufficiente lanciare:
./build
Il file build
è uno script minimale che compila zepto.c
in un binario:
gcc -Os -o zepto zepto.c
Per installare il binario e i file di sintassi nel sistema locale, eseguire:
./install
Copia:
-
zepto
in/usr/local/bin
-
language/
in~/.config/zepto/language/
-
zt.c
– sorgente principale -
build
– script di compilazione -
install
– script di installazione/configurazione -
languages/
– file.config
per evidenziazione sintassi
Tasto | Azione |
---|---|
Esc | Esce senza salvare |
F2 | Salva |
F10 | Salva ed esce |
F7 | Ricerca |
Ctrl+Z / Ctrl+Y | Undo / Redo |
Ctrl+C / Ctrl+X / Ctrl+V | Copia / Taglia / Incolla |
Shift + ←→ | Selezione testo |
PgUp / PgDn | Scroll verticale |
Zepto è rilasciato sotto licenza MIT.
Puoi usarlo, modificarlo e distribuirlo liberamente.
Zepto non è un clone di nano
, vi
o micro
. È un editor dichiaratamente minimale e progettato per:
- Ambienti di recupero
- Shell embedded
- Sviluppatori nostalgici dei sistemi testuali
- Chi cerca un editor C davvero didattico
Se vuoi contribuire, segnalare bug o proporre miglioramenti, sentiti libero di aprire una issue o una pull request.
Buona scrittura!