yazi: the file manager that replaced everything
Most terminal file managers feel like compromises. ranger is written in Python and chokes on large directories. lf is fast but barebones โ you configure everything yourself. nnn is lightning quick but its UI is... minimal, to put it kindly.
yazi is different. It's written in Rust, async by design, and fast enough that navigating a directory with 10,000 files feels the same as one with 10. It previews images, syntax-highlights code, and has a plugin system โ all without feeling bloated. If you've tried terminal file managers before and bounced off them, yazi is worth another look.
Install it: brew install yazi (macOS) ยท cargo install yazi-fm ยท other options
5 operations that make it worth switching
1. Navigation that feels instant
The three-column layout (parent / current / preview) means you always see where you are and where you're going. No ls โ cd โ ls loop.
2. Bulk file operations
Select files with Space, then operate on all of them at once โ copy (y), cut (x), paste (p), delete (d). Selections persist across directories, so you can pick files from different folders before pasting.
3. Built-in preview
Code gets syntax highlighting. Images render inline (in supported terminals like Ghostty, iTerm2, Kitty). PDFs, archives, and media files all preview without plugins.
4. Tabs
Press t to open a new tab, 1-9 to switch between them. Keep different project directories open simultaneously โ like browser tabs for your filesystem.
5. Shell integration
Press Q (capital Q) to quit yazi and cd into the directory you were browsing. Without this, quitting a file manager drops you back where you started. Add this to your shell config:
function y() { local tmp; tmp=$(mktemp); yazi "$@" --cwd-file="$tmp"; cd "$(cat "$tmp")"; rm "$tmp"; }
For the full reference, see our yazi cheatsheet.