I file manager grafici hanno raggiunto la maturità da anni. Finder, Nautilus e Dolphin fanno il loro lavoro e si assomigliano abbastanza. Per chi lavora su sessioni SSH, gestisce homelab o salta tra una pipeline di build e l’altra, però, la GUI rimane fuori dal flusso di lavoro. Conta solo quello che gira dentro al terminale già aperto, magari dentro tmux, magari su una macchina remota. Per anni quel territorio è stato di ranger (Python, sincrono), di nnn (minimalista all’estremo) e di Midnight Commander, eterno e affidabile, ma fermo al secolo scorso.
Yazi (in cinese significa anatra) è nato a fine 2023 e in poco più di due anni si è preso una fetta importante di quel pubblico. Scritto in Rust, completamente asincrono, con supporto nativo per i protocolli di anteprima immagini di Kitty, Sixel e iTerm2, integra un sistema di plugin in Lua che permette di estenderlo senza ricompilare nulla.
Il progetto su GitHub è già oltre le trentamila stelle e ha un ritmo di rilascio sostanzialmente settimanale. Il passaggio al versionamento calendario, l’arrivo del Virtual File System con SFTP nativo introdotto a fine 2025 e la stabilizzazione del package manager ya rendono Yazi più che pronto come driver quotidiano.
Architettura asincrona sempre al lavoro
Il differenziale tecnico di Yazi sta nella sua I/O completamente non bloccante. Ranger è scritto in Python e gestisce tutto in modo sincrono. Apri una cartella con diecimila file e la UI si pianta per qualche secondo mentre legge la lista. È un comportamento accettabile su una home directory, molto meno su un dataset, su un mount NFS o su una cache di build.
Yazi spreme il modello async di Rust (con Tokio sotto il cofano) e distribuisce sui core sia le operazioni di file system sia il decoding di immagini e l’evidenziazione di codice. Il risultato pratico è una UI che non si blocca mai, neppure quando il task scheduler interno sta copiando un archivio da svariati gigabyte in background.
Un altro dettaglio che aiuta è il pre-loading intelligente. Yazi calcola quanto spazio ha sullo schermo e legge solo quello che è effettivamente visibile, invece di processare l’intera directory prima di renderizzare. Se il terminale mostra quaranta righe, processa quelle quaranta. Sembra banale, ma in directory enormi ranger e lf mostrano subito la differenza.
Installazione e prima configurazione
Su macOS l’opzione più rapida resta Homebrew, include da subito le dipendenze opzionali che abilitano tutte le anteprime.
brew install yazi ffmpegthumbnailer sevenzip jq poppler fd ripgrep fzf zoxide imagemagickSu Arch e derivate tutto è nei repo ufficiali.
sudo pacman -S yazi ffmpeg 7zip jq poppler fd ripgrep fzf zoxide resvg imagemagickSu Debian, Ubuntu e dintorni il pacchetto non è ancora in repo stabile, perché Yazi richiede una toolchain Rust più recente di quella distribuita di default. Conviene installare via cargo o scaricare un binario precompilato dalla pagina delle release.
cargo install --locked yazi-fm yazi-cliLe dipendenze opzionali fanno la differenza. Senza ffmpegthumbnailer non vedi anteprime video, senza poppler quelle dei PDF, senza imagemagick quelle di alcuni formati immagine particolari. Quindi conviene installarle tutte la prima volta e dimenticarsene.
Si installa anche su Windows (terminale Wezterm raccomandato invece di powershell) con scoop (raccomandato), ma per avere i preview funzionanti dovrai combattere un po’ per installare tutte le dipendenze.
A questo punto puoi lanciare yazi, ma il passaggio davvero utile è quello che molti dimenticano. Si tratta del wrapper della shell che fa seguire la sessione corrente alla directory in cui navighi dentro Yazi. Aggiungi al tuo .zshrc o .bashrc il seguente blocco.
function y() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd
yazi "$@" --cwd-file="$tmp"
if cwd="$(command cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
builtin cd -- "$cwd"
fi
rm -f -- "$tmp"
}Da ora in poi lanci Yazi con y. Navighi dove ti pare, premi q e la shell ti porta automaticamente in quella directory. Se preferisci uscire restando nel percorso originale, usa Q maiuscola. È una di quelle integrazioni che dopo qualche giorno diventano essenziali e che, una volta perse, danno fastidio quando torni a un altro file manager.
Anteprime immagini e protocolli di terminale
Qui Yazi fa una scelta che ranger e lf hanno sempre evitato, ovvero integra direttamente i principali protocolli grafici dei terminali moderni. Su Kitty, WezTerm, Ghostty 1.3 e iTerm2 le anteprime di immagini, PDF e video vengono renderizzate inline con la stessa qualità che avrebbero in un visualizzatore grafico.
Niente sprite Unicode, solo pixel veri, scalati con una cache intermedia per evitare di ricaricare un’immagine ogni volta che la sfiori col cursore.
Il problema arriva solo se usi Alacritty o terminali che non implementano protocolli grafici moderni. In quel caso Yazi fa fallback su Chafa, che simula l’immagine con caratteri Unicode colorati. È un compromesso accettabile per capire al volo cosa stai guardando, ma se lavori in mezzo alle foto o alle immagini conviene seriamente cambiare emulatore.
Le anteprime non si limitano alle immagini. Yazi mostra PDF, archivi (ZIP, TAR, 7z), file di codice con syntax highlighting via syntect, sottotitoli, JSON formattato, e con i plugin giusti anche notebook Jupyter o tabelle DuckDB. L’anteprima è scrollabile, quindi puoi sfogliare un PDF di duecento pagine senza mai aprirlo davvero, premendo Alt+J e Alt+K per scorrere.
Plugin in Lua e il package manager ya
Il sistema di plugin è il punto in cui Yazi smette di essere “solo un file manager veloce” e diventa una piattaforma. Tutto si scrive in Lua (la versione 5.5 nella branca recente) e dalla v25.5.31 esiste un package manager dedicato, ya pkg, che si occupa di download, aggiornamenti e versioni bloccate.
L’installazione di un plugin è una riga.
ya pkg add yazi-rs/plugins:gitI plugin disponibili coprono casi d’uso che fino a poco fa richiedevano script esterni, tra cui i seguenti.
git.yazi, mostra lo stato Git accanto a ogni file (M, D, untracked) come nelle gutter dei moderni editormount.yazi, gestisce mount, unmount ed eject di dischi e partizionismart-enter.yazi, unifica “apri file” ed “entra in directory” sullo stesso tastojump-to-char.yazi, porta in Yazi ilf<carattere>di Vimduckdb.yazi, anteprima di CSV, JSON e Parquet con DuckDB, con summary delle colonne (min, max, avg)piper.yazi, usa l’output di qualsiasi comando di shell come anteprima, senza dover scrivere un plugintime-travel.yazi, naviga avanti e indietro tra gli snapshot di BTRFS e ZFSsimple-tag.yazi, tagging dei file cross-platform, alternativa portabile ai tag macOS
La struttura di un plugin è una cartella che termina in .yazi con dentro main.lua e README.md, e l’API espone tutto, tra cui filesystem, UI, eventi e scheduler.
Per debug puoi loggare con ya.dbg() in ~/.local/state/yazi/yazi.log. Il pacchetto types.yazi, rilasciato nella v25.5.28, fornisce le definizioni di tipo per LuaLS. Con Neovim o VS Code configurati ottieni autocompletamento e diagnostica mentre scrivi.
Due plugin che cambiano il tuo workflow sono git.yazi e piper.yazi. Il primo perché vede lo stato Git in tempo reale mentre navighi una repo ed elimina mezza dozzina di git status al minuto. Il secondo perché, invece di scrivere un preview plugin in Lua per ogni nuovo formato, lo si fa con una riga di shell.
Virtual file system e gestione remota nativa
Una delle aggiunte più rilevanti, arrivata con la v25.12.29 di fine dicembre 2025 e consolidata nella linea 26.x, è il Virtual File System. In pratica Yazi può montare destinazioni remote come fossero filesystem locali, e il caso d’uso più immediato è SFTP. Imposti la destinazione nella configurazione e da quel momento navighi un server remoto, fai copie, anteprime e operazioni come se fossero file sul disco.
Questa funzione è interessante perché elimina una delle operazioni rituali più tediose di chi gestisce homelab, cioè aprire un client SFTP separato (FileZilla, Cyberduck, l’estensione di un editor) solo per spostare due file.
Con Yazi resti nello stesso terminale, mantieni le stesse scorciatoie, e tutta la macchina remota è solo una tab in più. Per trasferimenti importanti rsync resta più indicato, ma per l’editing al volo è imbattibile.
Sotto il VFS gira un altro pezzo interno chiamato Data Distribution Service, una sorta di publish/subscribe in-process che permette ai plugin di comunicare tra loro e di persistere stato tra sessioni. È un dettaglio architetturale che permette ai plugin di crescere senza scontrarsi sullo stato globale. Vale la pena saperlo se prevedi di scriverne uno.
Trucchi che conviene imparare subito
Ci sono alcuni shortcut e integrazioni che fanno la differenza nella prima settimana di utilizzo. Il file chooser interno (Ctrl+O) ti permette di aprire un file con un’applicazione specifica, simile al “Apri con…” di un file manager grafico, ma scegli da una lista filtrabile.
Il visual mode si attiva con v. Selezioni un range di file con j/k e poi applichi yank, cut, delete o tag a tutto il blocco, esattamente come nella selezione di linea di Vim.
Il bulk rename è uno degli strumenti più sottovalutati. Selezioni i file, premi r, Yazi apre l’editor di sistema ($EDITOR) con un buffer dei nomi, e quando salvi e chiudi rinomina tutto secondo il diff.
La gestione dei task in background è esposta con w (mostra task in corso) e x (cancella il task selezionato), utile quando hai lanciato una copia da molti gigabyte e ne vuoi vedere la progress in tempo reale.
L’integrazione con Helix è particolarmente curata. Dalla v25.4.8 puoi usare Yazi direttamente dentro Helix senza passare per tmux o Zellij, e le anteprime grafiche continuano a funzionare. Se usi tmux, ricorda di mettere set -g allow-passthrough on nella config. Senza questa riga, le sequenze grafiche vengono mangiate dal multiplexer e i preview immagini smettono di apparire.
Yazi, vale la pena cambiare?
Il sistema di plugin di Yazi è giovane, e la stessa repo ufficiale riporta che molti plugin garantiscono compatibilità solo con la versione HEAD. I breaking change tra una minor e l’altra esistono. Su Windows il supporto c’è ed è in costante miglioramento, ma il terreno naturale di Yazi resta Linux e macOS.
Detto questo, è il file manager TUI che consiglierei a chiunque mi chiedesse oggi cosa installare. Le ragioni sono pratiche, ovvero la velocità è percepibile, l’integrazione con i terminali moderni elimina un’intera categoria di workaround, e il sistema di plugin permette di adattarlo a workflow molto specifici.
Per chi viene da ranger la curva di apprendimento è bassa, perché le keybinding vim-like sono identiche e in mezza giornata ci si sente a casa.
Il mio consiglio finale è semplice. Installalo, configura il wrapper y, aggiungi git.yazi come primo plugin e usalo per una settimana intera al posto del file manager grafico. Se dopo sette giorni non ti senti più produttivo, basta un brew uninstall yazi per tornare indietro. Ma è probabile che non succeda.













