Yazi : le gestionnaire de fichiers en terminal avec aperçus asynchrones

Naviguer dans une arborescence de fichiers depuis le terminal se fait souvent avec cd et ls enchaînés à l’aveugle, ou avec ranger, dont les aperçus Python peuvent geler l’interface sur un gros fichier. Yazi résout ce problème avec une architecture entièrement asynchrone : les aperçus se chargent en arrière-plan, sans jamais bloquer la navigation.

Ce que fait Yazi

Yazi (« duck » en chinois) est un gestionnaire de fichiers pour terminal (TUI) écrit en Rust, basé sur des I/O non bloquantes. Toutes les opérations d’entrée/sortie sont asynchrones et les tâches CPU sont réparties sur plusieurs threads, avec ordonnancement des tâches en temps réel (progression, annulation, priorités).

Il propose une navigation façon vim (hjkl), un panneau d’aperçu scrollable pour de nombreux types de fichiers, un système de plugins concurrent en Lua, un gestionnaire de paquets intégré pour installer plugins et thèmes, et un support natif de plusieurs protocoles d’image de terminal (Kitty, iTerm2, Sixel, avec fallback via Überzug++ ou Chafa). Le projet est en beta publique mais annoncé comme utilisable en quotidien ; des changements cassants sont encore possibles.

Installation

# Arch Linux
sudo pacman -S yazi ffmpeg 7zip jq poppler fd ripgrep fzf zoxide resvg imagemagick

# Debian / Ubuntu — dépôt APT officiel
curl -fsSL https://yazi-rs.github.io/builds/yazi-keyring.gpg | sudo tee /usr/share/keyrings/yazi-keyring.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/yazi-keyring.gpg] https://yazi-rs.github.io/builds/ stable main' | sudo tee /etc/apt/sources.list.d/yazi.list >/dev/null
sudo apt update && sudo apt install yazi

# Fedora / CentOS Stream 9+ / RHEL 9+ (dépôt COPR non officiel)
dnf copr enable lihaohong/yazi
dnf install yazi

# macOS (Homebrew)
brew install yazi ffmpeg-full sevenzip jq poppler fd ripgrep fzf zoxide resvg imagemagick-full font-symbols-only-nerd-font
brew link ffmpeg-full imagemagick-full -f --overwrite

# Windows (Scoop)
scoop install yazi
scoop install ffmpeg 7zip jq poppler fd ripgrep fzf zoxide resvg imagemagick

# Windows (WinGet)
winget install sxyazi.yazi
winget install Gyan.FFmpeg 7zip.7zip jqlang.jq oschwartz10612.Poppler sharkdp.fd BurntSushi.ripgrep.MSVC junegunn.fzf ajeetdsouza.zoxide ImageMagick.ImageMagick

# Cargo (toutes plateformes, nécessite make et gcc)
cargo install --force yazi-build

Sur Windows, la documentation officielle déconseille explicitement d’installer la dépendance file via Scoop ou Chocolatey : ces gestionnaires ne gèrent pas correctement les noms de fichiers Unicode. La méthode recommandée est d’installer Git for Windows et de pointer la variable d’environnement YAZI_FILE_ONE vers le file.exe fourni avec Git.

Une fois installé, lancez simplement :

yazi

q pour quitter, F1 ou ~ pour l’aide contextuelle.

Wrapper shell recommandé

Yazi ne change pas le répertoire de votre shell à la fermeture par défaut. Le projet fournit un wrapper y (bash/zsh/fish/nushell/PowerShell…) qui lit le CWD final via un fichier temporaire :

function y() {
	local tmp cwd; tmp="$(mktemp -t "yazi-cwd.XXXXXX")"
	command yazi "$@" --cwd-file="$tmp"
	IFS= read -r -d '' cwd < "$tmp"
	[ "$cwd" != "$PWD" ] && [ -d "$cwd" ] && builtin cd -- "$cwd" || builtin true
	command rm -f -- "$tmp"
}

Utilisez ensuite y pour lancer Yazi : en quittant avec q, votre shell se retrouve dans le dossier où vous étiez. Q quitte sans changer de répertoire.

Raccourcis essentiels

ToucheAction
h j k lNaviguer (parent / bas / haut / entrer dans le dossier)
g puis gAller en haut de la liste
GAller en bas de la liste
zChanger de dossier via fzf
ZChanger de dossier via zoxide
SpaceSélectionner / désélectionner
v / VMode visuel (sélection / désélection)
y / xCopier (yank) / couper
p / PColler / coller en écrasant
d / DMettre à la corbeille / supprimer définitivement
aCréer un fichier (terminer par / pour un dossier)
rRenommer
s / SChercher par nom (fd) / par contenu (ripgrep)
t puis tNouvel onglet
[ / ]Onglet précédent / suivant
wOuvrir le gestionnaire de tâches en arrière-plan

La liste complète des raccourcis (tri, liens symboliques, hardlinks, copie de chemins…) est dans le fichier de configuration par défaut keymap-default.toml.

Aperçus asynchrones

Le panneau de droite affiche un aperçu scrollable selon le type de fichier :

  • Images — décodage intégré, affiché nativement dans les terminaux compatibles (Kitty, iTerm2, WezTerm, Ghostty, Konsole, foot, Windows Terminal ≥ v1.22, VSCode…), avec repli sur Überzug++ (X11/Wayland) ou Chafa (ASCII art) ailleurs
  • Vidéos — miniature extraite via ffmpeg
  • PDF — rendu des pages via poppler
  • Archives (zip, 7z, rar…) — contenu listé sans extraction, via 7-Zip
  • JSON — aperçu formaté via jq
  • SVG — rendu via resvg
  • Code source avec coloration syntaxique intégrée, et polices/HEIC/JPEG XL via ImageMagick

Chaque aperçu tourne en tâche asynchrone : naviguer rapidement dans une arborescence pleine de vidéos ou d’archives volumineuses ne fige jamais l’interface, contrairement à des outils qui lancent leurs prévisualisations de façon bloquante.

Intégrations

Yazi s’appuie sur des outils CLI externes plutôt que de réinventer chaque brique :

  • fzf — navigation rapide dans les sous-dossiers (z), nécessite fzf ≥ 0.53.0
  • zoxide — saut vers un répertoire visité récemment (Z), nécessite fzf en complément
  • fd — recherche de fichiers par nom (s)
  • ripgrep — recherche de fichiers par contenu (S)
  • Neovim — pas d’intégration officielle, mais des plugins communautaires comme yazi.nvim (mikavilpas) ouvrent Yazi dans une fenêtre flottante avec synchronisation bidirectionnelle (fichier survolé dans Yazi = buffer mis en évidence dans Neovim)

Gestionnaire de paquets et plugins

Yazi embarque son propre gestionnaire de paquets pour installer plugins et thèmes (« flavors ») directement depuis GitHub :

# Installer un plugin
ya pkg add yazi-rs/plugins:git

# Installer un thème
ya pkg add yazi-rs/flavors:catppuccin-mocha

Des plugins officiels existent pour l’intégration git dans le panneau (git.yazi) ou la gestion des points de montage (mount.yazi).

Configuration

Trois fichiers TOML, à placer dans ~/.config/yazi/ (Unix) ou %AppData%\yazi\config\ (Windows) :

  • yazi.toml — configuration générale
  • keymap.toml — raccourcis clavier
  • theme.toml — thème de couleurs
# ~/.config/yazi/yazi.toml
[mgr]
show_hidden = true

Pour ajouter un raccourci sans écraser les valeurs par défaut, utilisez prepend_keymap ou append_keymap plutôt que keymap :

# ~/.config/yazi/keymap.toml
[mgr]
prepend_keymap = [
	{ on = "T", run = "plugin toggle-pane max-preview", desc = "Agrandir/réduire l'aperçu" },
]

+ Les points forts

  • Aperçus non bloquants — la navigation reste fluide même avec des vidéos, PDF ou archives volumineuses en aperçu
  • Support image natif étendu — protocoles Kitty, iTerm2, Sixel gérés directement, sans dépendance systématique à Überzug++
  • Navigation vim-likehjkl, mode visuel, recherche //?, sorts en , + touche — familier pour qui utilise déjà Vim/Neovim
  • Intégrations natives — fzf, zoxide, fd, ripgrep branchés directement sur des touches dédiées, pas besoin de les scripter soi-même
  • Gestionnaire de paquets intégré — installer un plugin ou un thème en une commande (ya pkg add), sans copier-coller de fichiers manuellement
  • Multi-plateforme — Linux, macOS, Windows, avec des paquets officiels et communautaires larges

- Les points faibles

  • Beta active — le projet prévient lui-même que des changements cassants peuvent survenir entre versions
  • Dépendances optionnelles nombreuses — pour profiter de tous les aperçus (vidéo, PDF, JSON, SVG, archives), il faut installer ffmpeg, poppler, jq, resvg, 7-Zip et ImageMagick séparément
  • Installation Windows plus délicate — la détection MIME correcte impose de passer par le file.exe de Git for Windows, pas par un simple scoop install file
  • Pas d’intégration Neovim officielle — il faut passer par un plugin tiers (yazi.nvim), avec le niveau de maintenance que cela implique
  • Documentation en anglais uniquement, avec un vocabulaire de configuration (Lua, TOML, concepts de « flavors ») qui demande un temps d’adaptation

Comparaison avec les alternatives

Yazirangerlf
LangageRustPythonGo
AperçusAsynchrones, natifs (images/vidéo/PDF/archives)Synchrones, via scripts externesBasiques, via scripts externes
Performance sur gros dossiersÉlevéePeut ralentir (Python)Élevée
PluginsLua, gestionnaire de paquets intégréPython, sans gestionnaire dédiéAucun système de plugin natif
MaturitéBeta activeTrès mature, peu maintenu récemmentMature
Protocoles image natifsKitty, iTerm2, SixelVia w3mimgdisplay / ueberzugVia ueberzug

En résumé

Yazi cible les utilisateurs qui naviguent beaucoup en terminal et veulent des aperçus riches sans les blocages typiques de ranger. L’architecture Rust/async le rend nettement plus réactif sur de gros dossiers ou des fichiers volumineux, au prix d’un projet encore en beta et d’une série de dépendances optionnelles à installer pour en tirer tout le potentiel.


Voir aussi :

  • fzf — le moteur de recherche floue derrière la navigation rapide de Yazi
  • ripgrep — utilisé par Yazi pour la recherche de fichiers par contenu
  • zoxide — le raccourci Z de Yazi s’appuie dessus pour sauter vers un dossier récent