终端里管文件,习惯了无非就是 ls、cd、mv 那一套,够用。但真到要给一堆照片按日期分组、想瞄一眼那个 PDF 里到底是什么、或者翻一个三百层的 node_modules 找东西的时候,纯命令行的效率就开始掉。切回图形界面的代价是手得离开键盘,而且图形界面在大目录上一样卡。
Yazi 是冲这个缝隙来的。Rust 写的终端文件管理器,名字念"鸭子"。
是什么
Yazi 是 2023 年 7 月开源的项目,Rust 写成,MIT 协议,当前版本 v26.9.1(2026-09-01 发布),仓库到 2026 年 9 月 18 日还有提交。GitHub 上 4.2 万 Star,1022 Fork。
它的技术底子是"基于非阻塞异步 I/O"。这一句基本解释了它为什么快:文件管理的瓶颈几乎全在 I/O 上——读目录、读缩略图、解压、预览大文件。传统实现里这些操作会把界面卡住,Yazi 把它们全扔进异步任务里,CPU 侧的重活再摊到多个线程上。目标是效率和易用两个都要,而不是二选一。
核心优势
异步做得彻底,连任务调度都是内建的。所有 I/O 操作异步,CPU 任务分散到多个线程。异步任务有实时的进度更新、可以随时取消、内部还带优先级分配——复制一个大目录的同时去浏览别的文件夹,不会互相堵住。这种"后台在忙、前台照用"的体感,是它跟老一代终端文件管理器拉开的第一个差距。
图片预览的覆盖面是同类里少见的。内置支持多种图形协议,覆盖的终端包括 kitty、iTerm2、WezTerm、Konsole、foot、Ghostty、Windows Terminal、st(打了 Sixel 补丁)、Warp、Tabby、VSCode 内置终端、Rio、Black Box、Bobcat。X11 和 Wayland 下接 Überzug++,实在不行还有 Chafa 走 ASCII art 兜底,基本不会出现"预览彻底不能用"的情况。除了图片,它还内置代码高亮和图片解码,配合预加载机制,翻图和翻代码的时候文件是提前准备好的。
插件系统是真能改界面的。UI 插件可以重写大部分界面,功能插件管行为;预览器、预加载器、spotter(快速定位)、fetcher 都能自己写。全是 Lua,改起来不用重编译。这意味着它的界面不是"配置项范围内的自定义",而是想怎么改就怎么改。
虚拟文件系统让远程目录变成本地目录。可以管理远程文件,可以自定义 VFS 提供者,也能接自定义搜索引擎。远程目录在界面里跟本地目录没有区别——预览、批量操作、跨目录选择照常。
数据分发服务是个不太常见的设计。基于客户端-服务器架构,而且不需要额外起一个服务进程。配一套 Lua 的发布订阅模型,实现跨实例通信和状态持久化。多个 Yazi 实例之间能同步状态,这种能力在终端工具里很少见。
插件和主题有包管理器。一条命令装好,可以保持更新,也可以锁死在某个版本。ripgrep、fd、fzf、zoxide 这些常用工具是直接集成的。
该有的日常功能一个不缺。Vim 风格的输入、选择、确认、which、通知组件,cd 路径带自动补全;多标签、跨目录选择、可滚动预览(视频、PDF、压缩包、代码、目录都能滚);批量重命名和新建、解压、可视模式、文件选择器、Git 集成、挂载管理;主题系统、鼠标支持、拖放、回收站、自定义布局。它不是那种"为快牺牲功能"的极简派。
安装/使用方法
各平台的安装方式官方文档里列得很全,从包管理器到源码编译都有,入口是安装那一页。装完直接敲 yazi 就进界面,当前目录就是起点。
操作系统层面的选择不多,主要是挑终端。图片预览能不能用,取决于你的终端支持哪种图形协议——这个问题官方给了一张对照表,按你常用的终端查一下就知道。如果用的是 X11 或 Wayland 下的普通终端,需要额外装 Überzug++;如果连这个都不满足,装 Chafa(1.16.0 以上)可以退到 Unicode 块拼出来的 ASCII 图,聊胜于无但至少能看出是什么图。
插件和主题走包管理器,一条命令装完,后续更新也是一条命令。想固定版本就把它钉住,避免某次更新之后配置失效。
配置是几个 TOML 文件加 Lua 脚本,放在配置目录里,改完重启就生效。因为插件能重写界面,社区里流传的配置往往改动很大,拿别人的配置之前建议先看看里面装了什么插件。
官方文档分了用法和特性两块,另有一篇专门讲内部实现的文章,标题就是问它为什么快。想弄清异步调度具体怎么设计的,那篇是绕不开的。
不是没有槽点
官方自己说还在公开测试阶段。项目状态写的是 public beta,能不能当主力日常用——能;但同时明确写了"正在密集开发,请预期破坏性变更"。这句话的意思是版本升级可能让你现有的配置失效,别指望配置写一次管三年。
图片预览有一层环境依赖。它不是自己就能画图的,得靠终端支持。这件事在 Linux 桌面上还算好办,到了远程 SSH、老终端、或者某些精简发行版上就要折腾。Windows 那边对 Windows Terminal 有版本要求,低于门槛就退到 ASCII。
学习曲线不低。Vim 风格的键位意味着你得重新记一套操作。加上多标签、可视模式、跨目录选择、批量重命名这些功能各自有各自的按键,前两天的效率大概率不如 ls 加图形界面。这工具是给愿意投入的人准备的。
配置要自己动手写。开箱能用,但想让它顺你的手,得改配置、挑插件、配主题。官方没有"一键导入最佳配置"这种东西,社区配置又各成一派。
平台体感有差别。它是从 Linux 和 macOS 的终端生态里长出来的,Windows 上虽然能跑,但终端图形协议的支持面比 Linux 窄,某些插件的行为也依赖类 Unix 环境。跨平台是支持的,等齐是不等的。
跟同类怎么比
终端文件管理器这个品类里,ranger 是 Python 写的经典,插件生态广、配置资料多,代价是启动和大目录下的响应偏慢;lf 用 Go 写,轻、启动快,但功能面窄一些,很多能力要靠外部命令拼;nnn 走的是极致轻量路线,快是真快,代价是功能要靠插件和脚本一块块补。
Yazi 的位置是"快 + 全"。Rust 加全异步让它在前两者擅长的速度上不吃亏,同时把图片预览、Lua 插件、虚拟文件系统、包管理器、数据分发这些偏重的能力都塞了进来。代价就是前面说的:配置更复杂、学习曲线更陡、还在 beta。
要是拿它跟图形文件管理器比,各有各的场景。拖拽、多窗口、右键菜单这些事图形界面确实更直接,但键盘流、远程目录、和命令行工具链打通这几件事,终端方案有天然优势。Yazi 想争的是那种"一天里八小时都在终端里"的人。
一句话判断:如果你常年待在终端里、用的是支持的终端、并且接受花两天重新记一套键位,Yazi 值得装。如果你只是偶尔在服务器上翻个文件、或者更习惯拖拽操作,那 ls 和图形界面已经够用,它给你带来的收益抵不上适应成本。
项目地址:https://github.com/sxyazi/yazi
文档站:https://yazi-rs.github.io/docs/installation
标签:#Yazi #终端工具 #文件管理器 #Rust #异步IO #命令行
你更愿意在终端里用键盘翻文件,还是拖回图形界面?