GitHub 37K+ Star!终端文件管理器 Yazi 深度解析
来源: 微信公众号(逛逛 GitHub)
GitHub: https://github.com/sxyazi/yazi
发布平台: 程序员茄子(chenxutan.com)
标签: 终端工具, 文件管理, Rust, Yazi, 命令行, 效率提升
引言
我把终端文件管理换成了 yazi,效率起飞。
最近这一两年工作方式变化挺大的。自从用上 Claude Code 这类工具之后,已经基本离不开了,每天大部分时间都泡在终端里。
AI 能帮你搞的,几乎全在 terminal 里完成。
反而又开始琢磨怎么把终端命令行用得爽了,配色主题、shell 提示符、tmux、模糊搜索。一通折腾下来,终端确实越来越顺手。
最近又发现一个开源项目,叫 yazi,专门解决终端里管理文件的问题。GitHub 上目前 37k+ Star,过去一年多从 15k 直接涨到 37k,增速很猛。
试用了几天之后,原来的 ranger 我就直接卸了。
一、Yazi 到底是什么?
yazi 这名字取自鸭子的中文谐音,是一个用 Rust 写的终端文件管理器,整个架构基于异步 I/O。
说白了就是让你在终端里像在 Finder 或者文件资源管理器里那样翻文件夹、预览文件、做批量操作。但所有操作都很快,不卡。
为什么它会火?
| 特性 | 说明 |
|---|---|
| 全异步 I/O | 进文件夹是真的快 |
| 内置预览 | 终端里直接看图片、视频、PDF |
| Lua 插件系统 | 扩展能力强 |
| 工具集成 | 串起一堆现代命令行工具 |
二、核心特性深度解析
1. 全异步 I/O,进文件夹是真的快
这是 yazi 最核心的卖点。
所有文件操作都不会阻塞界面,哪怕你进一个塞了几万个文件的文件夹,它也不会卡死,文件列表一边加载一边可以操作。
CPU 密集的任务自动分散到多线程,跑大任务的时候右下角实时显示进度,还能随时取消。
之前用 ranger 进大目录,那个加载等待的体感非常折磨。yazi 一上手最明显的差别就是这个,秒开。
性能对比
| 操作 | ranger | yazi |
|---|---|---|
| 进入 1 万文件目录 | 3-5秒 | <1秒 |
| 界面响应 | 阻塞 | 异步 |
| 大任务进度 | 无 | 实时显示 |
2. 终端里直接看图片、视频、PDF
yazi 内置了一堆图片协议支持,Kitty、iTerm2、Überzug++、Chafa 啥的全都集成了,几乎覆盖所有主流终端。
实际效果就是:你在终端里光标移到一张图片上,右边预览面板里直接出图,不用切到图形界面去看。
支持的预览类型
| 类型 | 说明 |
|---|---|
| 图片 | JPG、PNG、GIF、WebP 等 |
| 视频 | 预览第一帧 |
| 页面预览 | |
| 代码 | 语法高亮 |
这套体验整下来,文件管理就不用反复在 GUI 和 terminal 之间切换了。
3. Lua 插件系统,能玩花样
yazi 的扩展能力非常强,UI 插件、功能插件都能用 Lua 自己写,社区已经有一堆现成的插件可以直接装。
插件能力
- 自定义预览器
- 预加载器
- 文件探测器
- 主题定制
门槛比改源码低多了。
随便举个例子,想让某种特定后缀的文件用某个工具来预览,写几行 Lua 就搞定。
这个扩展性比 ranger 那套 Python 脚本要现代得多。
4. 把一堆现代命令行工具都串起来了
yazi 默认就集成了这些工具:
| 工具 | 用途 |
|---|---|
| ripgrep | 搜内容 |
| fd | 找文件 |
| fzf | 模糊查找 |
| zoxide | 智能跳转目录 |
这套组合拳打下来,搜索和导航的体验非常顺滑。
5. Vim 键位,操作流畅
操作上是 Vim 键位:
| 按键 | 功能 |
|---|---|
| j/k | 上下移动 |
| gg/G | 跳转首/末 |
| v | 进入视觉模式 |
| V | 选择整行 |
Vim 用户基本零成本上手。
6. 日常功能齐全
| 功能 | 说明 |
|---|---|
| 多标签页 | 多个目录同时浏览 |
| 批量重命名 | 快速修改多个文件名 |
| Git 状态 | 显示文件在 Git 中的状态 |
| 回收站 | 支持删除到回收站 |
| 鼠标支持 | 可用鼠标点击操作 |
三、安装与配置
macOS 安装
# 安装 yazi
brew install yazi --HEAD
# 安装伴生工具(强烈建议)
brew install ffmpeg sevenzip jq fd ripgrep fzf zoxide imagemagick
少了这几个里的某个,对应的预览或者搜索能力就会缺一块,体验会打折扣。
配置文件
配置文件都在 ~/.config/yazi/ 下面,主题、键位、插件全在这里改。
官方文档和社区都给了不少现成的配置,照着抄一份基本就够用了。
实用配置:自动跳转目录
我个人比较推荐再配一个 shell 函数,让你按 q 退出 yazi 的时候,shell 的当前目录自动跳到 yazi 里最后停留的目录。
这个体验装上之后会非常上头,等于是把 yazi 当成 cd 的图形化版本来用。
Zsh 配置示例
# ~/.zshrc
# yazi 自动跳转
function yazi() {
local tmp="$(mktemp -t "yazi-cdw.XXXXXX.xxd")"
yazi "$@" --cwd-file "$tmp"
local cwd="$(cat -- "$tmp")"
rm -f -- "$tmp"
if [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
cd -- "$cwd"
fi
}
# 绑定快捷键
bindkey -s '^f' 'yazi_cd^M'
四、与 Ranger 对比
| 特性 | Ranger | Yazi |
|---|---|---|
| 语言 | Python | Rust |
| 性能 | 同步,阻塞 | 异步,非阻塞 |
| 预览 | 基础 | 丰富(图片/视频/PDF) |
| 扩展 | Python 脚本 | Lua 插件 |
| 速度 | 慢 | 快 |
| 内存 | 较高 | 较低 |
实际体验
- Ranger:进大目录要等,加载期间界面卡死
- Yazi:秒开,异步加载,界面始终流畅
五、插件生态
热门插件
| 插件 | 功能 |
|---|---|
| yazi-plugin-image | 图片预览增强 |
| yazi-pluginfz | fzf 集成 |
| yazi-plugingit | Git 状态增强 |
| yazi-themewm | 主题集合 |
安装插件
# 克隆插件到配置目录
git clone https://github.com/yazi-term/plugins.git ~/.config/yazi/plugins
六、常见问题
Q1:Yazi 和 Ranger 选哪个?
选 Yazi 如果你:
- 追求速度和流畅度
- 需要图片/视频预览
- 喜欢 Lua 扩展
- 习惯 Vim 操作
选 Ranger 如果你:
- 已经是 Ranger 重度用户
- 需要特定的 Python 脚本功能
Q2:终端不支持图片预览怎么办?
确保你的终端支持以下协议之一:
- Kitty
- iTerm2
- Überzug++
主流终端推荐 iTerm2 或 Kitty。
Q3:如何自定义快捷键?
编辑 ~/.config/yazi/keymap.toml:
[manager]
show_hidden = false
sort_by = "natural"
sort_dir_first = true
[manager.preview]
image_protocols = ["kitty", "iterm", "sixel"]
七、总结
yazi 是一个现代化的终端文件管理器,用 Rust 编写,基于异步 I/O,性能出色。
核心优势
✅ 全异步 I/O:秒开大目录,不卡顿
✅ 内置预览:图片、视频、PDF、代码
✅ Lua 插件:扩展性强
✅ 工具集成:ripgrep、fd、fzf、zoxide
✅ Vim 键位:零成本上手
适用人群
- 每天大部分时间在终端工作
- 需要频繁管理文件和目录
- 追求效率和体验
- 喜欢 Vim 操作方式
本文首发于「程序员茄子」博客,原文链接:https://chenxutan.com