简介
yazi(中文”鸭子”的拼音)是一款使用 Rust 编写的极速终端文件管理器。它基于异步 I/O 架构设计,能够在浏览大量文件时保持流畅的交互体验。yazi 最引人注目的特性是支持终端内图片预览,包括 PNG、JPG、GIF 动图甚至 PDF 文件的预览。
yazi 提供了 Vim 风格的键位操作、强大的插件系统和丰富的内置功能。它支持批量重命名、文件搜索、归档管理、目录跳转等高级功能,并且可以通过 Lua 脚本进行深度定制。对于追求效率的终端用户,yazi 是 ranger 和 lf 的优秀替代方案。
安装
# macOS
brew install yazi
# Arch Linux
sudo pacman -S yazi
# Cargo
cargo install --locked yazi-fm yazi-cli
建议同时安装以下依赖以获得最佳预览体验:
# 文件预览相关依赖
brew install ffmpeg poppler fd ripgrep fzf zoxide jq
核心特性
- 极速异步: 基于 Tokio 异步运行时,文件加载和预览完全非阻塞
- 图片预览: 支持在终端中直接预览图片、视频缩略图和 PDF
- Vim 键位: 使用 h/j/k/l 导航,操作高效自然
- 插件系统: 通过 Lua 脚本扩展功能,社区插件丰富
- 批量操作: 支持批量选择、重命名、复制、移动和删除
- 集成搜索: 内置 fd 和 ripgrep 集成,快速搜索文件和内容
使用示例
# 启动 yazi
yazi
# 在指定目录启动
yazi ~/projects
# 退出时切换到最后浏览的目录(需要 Shell 包装函数)
function y() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd
yazi "$@" --cwd-file="$tmp"
if cwd="$(command cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
builtin cd -- "$cwd"
fi
rm -f -- "$tmp"
}
常用快捷键:
h/l - 返回上级/进入目录
j/k - 上下移动光标
Space - 选择/取消选择文件
Enter - 打开文件
y/p/d - 复制/粘贴/删除
r - 重命名
/ - 搜索文件
z - 使用 zoxide 跳转
q - 退出
典型场景
场景一:快速浏览和预览多媒体文件
在 Kitty/iTerm2 等支持图像协议的终端下,yazi 能直接预览图片:
# 启动 yazi,浏览图片目录
yazi ~/Pictures
# 使用 j/k 上下浏览,图片实时在右侧预览
# 支持 PNG、JPG、GIF 动图、PDF(首页预览)
# 视频文件显示缩略图帧(需安装 ffmpeg)
场景二:批量重命名文件
整理照片或下载文件时,需要批量规范文件名:
# 在 yazi 中:
# 1. 按 Space 多选文件
# 2. 按 r 进入批量重命名模式
# 3. 会在 $EDITOR 中打开重命名列表
# 4. 用编辑器的多光标或替换功能改名
# 5. 保存退出后自动执行重命名
等价于 vidir 命令,但集成在文件管理器中,更直观。
场景三:退出时自动切换到浏览目录
配合 Shell 函数,在 yazi 里浏览到目标目录后退出,Shell 自动跳转过去:
# 在 ~/.zshrc 中添加(官方推荐)
function y() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd
yazi "$@" --cwd-file="$tmp"
if cwd="$(command cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
builtin cd -- "$cwd"
fi
rm -f -- "$tmp"
}
# 之后用 y 代替 yazi
y # 浏览文件系统,退出后 shell 自动 cd 到你最后所在的目录