Terminal file managers like Ranger, Midnight Commander, and lf have long served developers who prefer navigating directory hierarchies without reaching for a graphical mouse. However, as file trees grow to include tens of thousands of assets and high-resolution images, Python-based managers like Ranger often suffer from synchronous blocking, leading to perceptible UI stutters when scrolling or rendering previews. To address this performance bottleneck, modern Linux environments are rapidly adopting Yazi. Written in Rust and built upon the Tokio asynchronous runtime, Yazi is a blazing-fast terminal file manager that combines non-blocking async I/O, high-performance image and PDF previews, and intuitive Vim-like keybindings.
Why Yazi Outperforms Traditional Terminal File Managers
Yazi was architected from the ground up for modern hardware and multi-core processing:
- Full Asynchronous I/O: Directory loading, file size calculations, and preview generation run concurrently in background threads without freezing the user interface.
- Native Terminal Image Previews: Integrates directly with modern terminal graphics protocols (Kitty graphics protocol, Sixel, and Überzug++) to display high-resolution image, video frame, and PDF previews in the terminal window.
- Vim-Style Navigation: Natural movement using standard
h,j,k, andldirectional motions. - Integrated Search and Filtering: Native integration with
ripgrepandfdfor instant recursive filename search and in-file text content grep. - Extensible Lua Plugin Architecture: Customise keymaps, preview handlers, and status bars using lightweight Lua scripts.
Installing Yazi Across Linux Distributions
Because Yazi is written in Rust, it can be deployed via distribution package repositories, Cargo, or precompiled standalone binaries.
Method 1: Package Manager Installation (Arch & Fedora)
On Arch Linux and Manjaro:
sudo pacman -S yazi
On Fedora (via Copr or native repositories):
sudo dnf copr enable atim/yazi
sudo dnf install -y yazi
Method 2: Installing via Cargo (Universal)
If you have Rust and Cargo configured:
cargo install --locked yazi-fm yazi-cli
Method 3: Downloading Standalone Precompiled Binaries
For Debian, Ubuntu, and CentOS systems without Rust build chains:
VERSION=$(curl -s https://api.github.com/repos/sxyazi/yazi/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\\1/')
wget "https://github.com/sxyazi/yazi/releases/download/${VERSION}/yazi-x86_64-unknown-linux-musl.zip"
unzip yazi-x86_64-unknown-linux-musl.zip
sudo mv yazi-x86_64-unknown-linux-musl/yazi /usr/local/bin/
sudo mv yazi-x86_64-unknown-linux-musl/ya /usr/local/bin/
sudo chmod +x /usr/local/bin/yazi /usr/local/bin/ya
Installing Recommended Preview Utilities
To enable rich media previews for images, video thumbnails, and PDF documents, install auxiliary CLI tools:
sudo apt install -y ffmpegthumbnailer 7zip jq poppler-utils fd-find ripgrep fzf
Basic Navigation and File Operations in Yazi
Launch the manager simply by typing yazi in your terminal:
yazi
The interface presents a clean three-column Miller columns layout:
- Left Column: Parent directory hierarchy.
- Middle Column: Current working folder contents.
- Right Column: Live contextual preview pane (displaying syntax-highlighted code, rendered images, archive contents, or EXIF metadata).
Essential Keybindings
| Key | Action |
|---|---|
| h / l | Move up to parent directory / Enter selected folder |
| j / k | Navigate down / Navigate up through file list |
| Space | Toggle multi-file selection marker |
| y / x | Yank (copy) / Cut selected files |
| p | Paste copied or cut files into current directory |
| d | Send selected files to system Trash |
| a | Create new file (append a trailing slash / to create a folder) |
| r | Rename selected file |
| q | Quit Yazi |
Advanced Searching and Shell Integration
Yazi integrates deep searching directly into directory trees:
1. Incremental Filtering and Fuzzy Finding
- Press f to initiate live fuzzy searching across the current directory using
fzf. - Press / to filter items within the current folder view as you type.
- Press s to execute a recursive file content search using
ripgrep.
2. Shell Directory Hopping Wrapper
To have your active shell change its working directory to whatever folder you are viewing when you quit Yazi, add this shell function to ~/.bashrc or ~/.zshrc:
function y() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")"
yazi "$@" --cwd-file="$tmp"
if cwd="$(cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
builtin cd -- "$cwd"
fi
rm -f -- "$tmp"
}
Running y opens Yazi, and pressing q leaves you in your browsed folder seamlessly.