Yazi is a high-performance terminal file manager written in Rust. Built on a non-blocking async I/O model, it is designed for speed and efficiency. It offers a highly customizable environment that streamlines file management through a modern, responsive interface.
ripgrep, fd, fzf, and zoxide.cd path auto-completion.To function correctly, Yazi requires the file utility (for file type detection).
You can also install the following optional dependencies to enable additional features:
ffmpeg (for video thumbnails)jq (for JSON previews)poppler (for PDF previews)fd (for file searching)rg (for searching file contents)fzf (for fast subtree navigation, requires version ≥0.53.0)zoxide (for history-based directory navigation, requires fzf)resvg (for SVG previews)xclip / wl-clipboard / xsel (for Linux clipboard support)If any feature fails to load, ensure these tools are updated to their latest versions.
Follow the instructions below based on your operating system.
Install the stable version and common dependencies via pacman:
sudo pacman -S yazi ffmpeg 7zip jq poppler fd ripgrep fzf zoxide imagemagick
paru -S resvg
For the latest development version, use the AUR or Arch Linux CN repository:
paru -S yazi-git ffmpeg 7zip jq poppler fd ripgrep fzf zoxide resvg imagemagick
Alternatively, you can install the official nightly binary from the AUR, which is updated every six hours:
paru -S yazi-nightly-bin ffmpeg 7zip jq poppler fd ripgrep fzf zoxide resvg imagemagick
Yazi is available as a Nix package.
nix-env -iA nixos.yazinix-env -iA nixpkgs.yaziOr add it directly to your configuration:
# configuration.nix
environment.systemPackages = with pkgs; [
yazi
];
First, ensure Homebrew is up to date, then install Yazi and its recommended dependencies:
brew update
brew install yazi ffmpeg sevenzip jq poppler fd ripgrep fzf zoxide resvg imagemagick font-symbols-only-nerd-font
To install the latest development build from the source, use the --HEAD flag:
brew install yazi --HEAD
Yazi relies on file(1) to detect MIME types. On Windows, the most reliable approach is to install Git for Windows, which includes a bundled file.exe.
file.exe to your YAZI_FILE_ONE environment variable. The path depends on your installation method:C:\Program Files\Git\usr\bin\file.exeC:\Users\<Username>\scoop\apps\git\current\usr\bin\file.exeInstall via Scoop:
scoop install yazi
# Recommended dependencies:
scoop install ffmpeg 7zip jq poppler fd ripgrep fzf zoxide resvg imagemagick
Install via WinGet:
winget install sxyazi.yazi
# Recommended dependencies:
winget install Gyan.FFmpeg 7zip.7zip jqlang.jq sharkdp.fd BurntSushi.ripgrep.MSVC junegunn.fzf ajeetdsouza.zoxide ImageMagick.ImageMagick
Note: poppler and resvg are not currently available on WinGet. Install them via Scoop or download the binaries manually from their respective project pages.
Yazi is also available via Snapcraft, Flatpak, AOSC OS, and x-cmd. Alternatively, you can download official pre-compiled binaries, install via crates.io, or build directly from the source code.
Once installed, type yazi in your terminal to start the application. Press q to quit, or use F1 (or ~) to access the help menu.
It is highly recommended to use the following shell wrapper (named y). This allows Yazi to change your shell's current working directory to the directory you were browsing when you exited the program.
Configuration for Bash / Zsh:
function y() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd
yazi "$@" --cwd-file="$tmp"
IFS= read -r -d '' cwd < "$tmp"
[ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd"
rm -f -- "$tmp"
}
Configuration for Fish:
function y
set tmp (mktemp -t "yazi-cwd.XXXXXX")
yazi $argv --cwd-file="$tmp"
if read -z cwd < "$tmp"; and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
builtin cd -- "$cwd"
end
rm -f -- "$tmp"
end
Add the relevant snippet to your shell configuration file (e.g., .bashrc, .zshrc, or config.fish). You can then launch Yazi by typing y.
q to exit and change the shell directory.Q to exit without changing the shell directory.Navigate using the arrow keys or standard Vim keys (h, j, k, l):
| Key | Alternative | Action |
|---|---|---|
k |
↑ |
Move cursor up |
j |
↓ |
Move cursor down |
l |
→ |
Enter the highlighted directory |
h |
← |
Move to the parent directory |
Additional Navigation:
| Key | Action |
|---|---|
K |
Scroll up 5 lines in the preview pane |
J |
Scroll down 5 lines in the preview pane |
g then g |
Jump to the top of the list |
G |
Jump to the bottom of the list |
z |
Jump to a directory or file using fzf |
Z |
Jump to a directory using zoxide |
| Key | Action |
|---|---|
Space |
Toggle selection for the current item |
v |
Enter visual mode (selection) |
V |
Enter visual mode (unselection) |
Ctrl + a |
Select all items |
Ctrl + r |
Invert selection |
Esc |
Clear selection |
| Key | Action |
|---|---|
o |
Open selected files |
O |
Open selected files with a specific application (interactive) |
Enter |
Open selected files |
Shift + Enter |
Open selected files interactively (terminal dependent) |
Tab |
Toggle detailed file information |
y |
Copy (yank) selected files |
x |
Cut selected files |
p |
Paste files |
P |
Paste files (overwrite existing) |
Y or X |
Cancel copy/cut operation |
d |
Move selection to trash |
D |
Permanently delete selection |
a |
Create new file (use a trailing / for directories) |
r |
Rename selection |
. |
Toggle hidden files |
| Key Sequence | Action |
|---|---|
c then c |
Copy absolute file path |
c then d |
Copy directory path |
c then f |
Copy filename |
c then n |
Copy filename (excluding extension) |
| Key | Action |
|---|---|
f |
Filter files in the current view |
/ |
Search for the next file |
? |
Search for the previous file |
n |
Jump to the next match |
N |
Jump to the previous match |
| Key | Action |
|---|---|
s |
Search filenames using fd |
S |
Search file contents using ripgrep |
Ctrl + s |
Cancel an active search |
| Key Sequence | Action |
|---|---|
, then m |
Sort by modification time |
, then M |
Sort by modification time (descending) |
, then b |
Sort by creation time |
, then B |
Sort by creation time (descending) |
, then e |
Sort by extension |
, then E |
Sort by extension (descending) |
, then a |
Sort alphabetically |
, then A |
Sort alphabetically (descending) |
, then n |
Natural sort |
, then N |
Natural sort (descending) |
, then s |
Sort by size |
, then S |
Sort by size (descending) |
, then r |
Randomize order |
| Key | Action |
|---|---|
t |
Open a new tab in the current directory |
1–9 |
Switch to a specific tab index |
[ |
Switch to the previous tab |
] |
Switch to the next tab |
{ |
Move the current tab to the left |
} |
Move the current tab to the right |
Ctrl + c |
Close the current tab |
What to Eat: AI Recipes and Meal Planning You Can Self-Host
withoutbg: Free Local & API-Based AI Background Removal Tool
How to Set Up Clash for Android With TizLink VPN (2026 Guide)
Akaunting Review: Free Open-Source Accounting Software for Small Business
NeuralAgent: An Open-Source AI Agent for Native Desktop Automation
OpenHands: The AI Agent That Writes Code and Executes Commands
Xiaozhi Client: MCP Server Aggregator for Cursor and XiaoZhi AI
NotebookLlama: An Open-Source NotebookLM Alternative with AI Voice
Ccundo: Smart Undo and Redo Tool for Claude Code Sessions
Microsoft’s NLWeb: Converting Any Website into a Conversational Interface
MCP SuperAssistant: Bring MCP Tools to ChatGPT, Gemini, and Beyond
LiveTerm: A Next.js Terminal-Style Website Template