Managing files in the terminal means chaining ls, cd, cp, mv back and forth.
You want something like Finder — quick browsing, image previews — without leaving the terminal.
yazi is that. Vim keybindings, written in Rust, fast.
What yazi Is
yazi (Chinese for “duck”) is a terminal file manager written in Rust, built around non-blocking async I/O. File operations, previews, and thumbnails all run in the background — the UI doesn’t freeze.
Key features:
- Image preview: kitty, iTerm2, WezTerm, Sixel, and more
- Syntax highlighting: built-in, no external tools needed
- Multi-format preview: video thumbnails (FFmpeg), PDF (poppler), archives, directory trees
- Vim keybindings:
h/j/k/lnavigation,/search, visual mode for batch selection - Lua plugins: highly customizable UI, active plugin ecosystem
- Tool integration: fzf, zoxide, ripgrep, fd
Installation
| |
The only hard dependency is the file command (usually pre-installed). Everything else (ffmpeg, poppler, etc.) is optional — install what you need for the preview formats you want.
Basic Usage
| |
| Key | Action |
|---|---|
h / ← | Parent directory |
l / → | Enter directory / open file |
j / k | Move down / up |
gg / G | Jump to top / bottom |
Space | Toggle selection |
y | Copy |
d | Cut |
p | Paste |
D | Move to trash |
r | Rename |
/ | Search current directory |
f | fzf jump |
z | zoxide jump |
q | Quit and cd to current directory |
Shell Integration: cd on Exit
Add a wrapper function so your shell follows yazi to whatever directory you navigated to:
| |
| |
Use yy instead of yazi. When you quit, your shell is already in the right directory.
Image Preview: Terminal Support
yazi auto-detects the terminal and picks the best image protocol. Check what it detected:
| |
| Terminal | Method |
|---|---|
| kitty | Kitty unicode placeholders (best) |
| iTerm2 / WezTerm / Ghostty | Inline images protocol |
| foot / Windows Terminal | Sixel |
| Alacritty | No native protocol support (see below) |
Alacritty Image Preview
Alacritty supports no image protocol — no kitty, no Sixel. yazi shows no images by default. The fix depends on your platform:
macOS: Chafa
On macOS, Überzug++’s X11/Wayland backend is disabled at compile time, so it can’t overlay images. yazi automatically falls back to Chafa, which renders images using Unicode block characters inside the terminal.
Chafa is usually installed alongside yazi. Check:
| |
If not installed:
| |
Verify yazi picks it up:
| |
Chafa in the output means image preview is active. Open yazi and you’ll see it. Quality is character-based simulation rather than real pixels, but it works fine in a terminal.
Linux: Überzug++
Linux has X11 or Wayland, so Überzug++ can overlay actual images on top of the terminal window — much better quality than Chafa.
| |
yazi auto-detects after installation:
| |
Fine-tuning (optional)
Überzug++ overlays externally, so positioning can drift slightly. Adjust in ~/.config/yazi/yazi.toml:
| |
Then: yazi --clear-cache
Image Preview Inside tmux
Works for both Chafa and Überzug++. Add to ~/.tmux.conf:
| |
Configuration Files
| |
Install themes and plugins with the ya package manager:
| |
Summary
yazi is noticeably faster than ranger or lf, mainly because of the async architecture. Once you’re used to the vim keybindings, most file operations happen without leaving the terminal.
Alacritty users: on macOS, install Chafa and yazi picks it up automatically. On Linux, Überzug++ gives real image quality instead of character simulation. Either way, no extra configuration — install the tool and open yazi.
