案例 GitHub 37K+ Star!终端文件管理器 Yazi 深度解析

2026-05-05 19:07:49 +0800 CST views 5

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 一上手最明显的差别就是这个,秒开

性能对比

操作rangeryazi
进入 1 万文件目录3-5秒<1秒
界面响应阻塞异步
大任务进度实时显示

2. 终端里直接看图片、视频、PDF

yazi 内置了一堆图片协议支持,Kitty、iTerm2、Überzug++、Chafa 啥的全都集成了,几乎覆盖所有主流终端。

实际效果就是:你在终端里光标移到一张图片上,右边预览面板里直接出图,不用切到图形界面去看。

支持的预览类型

类型说明
图片JPG、PNG、GIF、WebP 等
视频预览第一帧
PDF页面预览
代码语法高亮

这套体验整下来,文件管理就不用反复在 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 对比

特性RangerYazi
语言PythonRust
性能同步,阻塞异步,非阻塞
预览基础丰富(图片/视频/PDF)
扩展Python 脚本Lua 插件
速度
内存较高较低

实际体验

  • Ranger:进大目录要等,加载期间界面卡死
  • Yazi:秒开,异步加载,界面始终流畅

五、插件生态

热门插件

插件功能
yazi-plugin-image图片预览增强
yazi-pluginfzfzf 集成
yazi-plugingitGit 状态增强
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++

主流终端推荐 iTerm2Kitty

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

推荐文章

MySQL 1364 错误解决办法
2024-11-19 05:07:59 +0800 CST
Golang 随机公平库 satmihir/fair
2024-11-19 03:28:37 +0800 CST
deepcopy一个Go语言的深拷贝工具库
2024-11-18 18:17:40 +0800 CST
php内置函数除法取整和取余数
2024-11-19 10:11:51 +0800 CST
Vue3中哪些API被废弃了?
2024-11-17 04:17:22 +0800 CST
html夫妻约定
2024-11-19 01:24:21 +0800 CST
JavaScript中的常用浏览器API
2024-11-18 23:23:16 +0800 CST
乐观锁和悲观锁,如何区分?
2024-11-19 09:36:53 +0800 CST
15 个 JavaScript 性能优化技巧
2024-11-19 07:52:10 +0800 CST
js迭代器
2024-11-19 07:49:47 +0800 CST
程序员茄子在线接单