Yazi 是一款基于异步 I/O 的终端文件管理器,用 Rust 编写,强调全异步架构、强大的任务调度、丰富的插件生态与跨平台能力,兼具极速性能与高度可定制性。它通过 Lua 插件重写 UI 与逻辑,集成多种现代工具,为开发者带来高效、流畅的命令行文件操作体验。
适用人群:1. 开发者与系统管理员:频繁在终端工作,追求键盘流与高效文件操作;2. 注重性能与可定制性的极客:希望在 TUI 中获得 GUI 级体验与深度配置;3. 需要跨平台一致体验的用户:在 macOS、Linux、Windows 间切换,依赖远程文件与云盘管理
适用场景:1. 本地海量文件快速浏览与批量处理,如重命名、归档解压、跨目录选择;2. 远程文件与虚拟文件系统管理,结合 Rclone 等进行云盘操作;3. 以键盘为中心的开发工作流,快速跳转、搜索(fd/fzf/ripgrep)、预览(代码高亮、图片、PDF、视频、压缩包)
推荐理由:Yazi 以全异步 Rust 架构带来显著的性能优势与流畅交互,插件体系完整、生态丰富,将任务调度、预览、图片渲染、VFS、DDS 等能力有机整合。对追求效率的终端用户而言,它既是即装即用的高效工具,也是可深度定制的平台,值得纳入日常工具链。
项目定位与背景
Yazi(意为“鸭子”)是一款用 Rust 编写、基于非阻塞异步 I/O 的终端文件管理器,目标是在命令行环境中提供高效、友好且可定制的文件管理体验。项目在 GitHub 已获得超过 4.3 万星,社区活跃,定位为“极速 + 可扩展”的 TUI 文件管理工具,覆盖 macOS、Linux、Windows,并与 Neovim、fzf、ripgrep 等现代命令行生态深度集成。
核心功能与技术架构
Yazi 的核心是全异步支持:所有 I/O 操作异步化,CPU 任务跨多线程分发,最大化利用现代多核资源。内置强大的异步任务调度与管理,支持实时进度、任务取消与优先级分配,确保在大量文件或网络存储场景下仍保持流畅。它集成 Überzug++ 与 Chafa,覆盖大多数终端的图片渲染协议,同时内置代码高亮与图片解码,配合预加载机制显著加速文件与媒体加载。
插件系统是 Yazi 的骨架。它采用并发式 Lua 插件架构,用 Lua 重写了大部分 UI 与交互逻辑,并提供功能性插件接口,支持自定义预览器、预加载器、spotter 与 fetcher。虚拟文件系统允许远程文件管理,支持自定义 VFS 提供者与搜索引擎。基于客户端-服务器架构的 DDS(数据分发服务)无需额外服务器进程,采用 Lua 发布-订阅模型实现跨实例通信与状态持久化。包管理器可一键安装、更新、固定版本的插件与主题。
在工具链方面,Yazi 集成了 ripgrep、fd、fzf、zoxide,并通过插件支持 Rclone、Git 与挂载管理。交互组件采用 Vim 风格,包括输入、选择、确认、which-key 与通知,cd 路径自动补全。功能层面覆盖多标签、跨目录选择、可视化模式、批量重命名/创建、归档解压、可滚动预览(视频、PDF、压缩包、代码、目录等)、主题系统、鼠标支持、拖拽、回收站、自定义布局,以及 CSI u、OSC 52、CSI 2031 等终端能力。
创新点与亮点
Yazi 将“异步 + 任务调度”作为第一优先级,所有文件操作以任务形式可视化管理,用户可取消、重排优先级,获得实时反馈。这一设计在网络盘、大目录、批量操作时尤其明显地降低等待与不确定性。其次,Lua 驱动的并发插件体系让 UI 与逻辑都可被重写,用户无需 fork 主程序即可定制行为与外观,生态因此得以快速扩展。第三,VFS 与 DDS 的引入使 Yazi 不仅是本地文件管理器,更是面向分布式工作流的“文件管理平台”,支持跨实例状态同步与远程文件统一访问。最后,Überzug++/Chafa 的图像支持与内置解码、预加载,让终端也拥有接近 GUI 的图片与媒体预览体验。
与同类项目对比
与传统终端文件管理器如 ranger、vifm 相比,Yazi 在性能与扩展性上更具优势:异步 I/O 与任务调度带来更好的响应性,Lua 插件系统提供更灵活的定制能力,图片与媒体预览、VFS、DDS 等特性超越基础文件浏览。与只能在 Nix 系或特定发行版可用的 nnnn 等工具相比,Yazi 跨平台支持更完整、生态更丰富。相较于 GUI 文件管理器,Yazi 保留了键盘流与 TUI 的高效,同时在预览、批量操作与远程文件方面补足了 GUI 才具备的能力。
上手指南或快速开始
安装方面,Rust 用户可通过 cargo 安装(例如 cargo install yazi-cli,具体以仓库说明为准),各平台也可使用包管理器(Homebrew、AUR、Scoop 等)或预编译二进制。首次启动后建议在 ~/.config/yazi 中放置配置与插件,使用内置包管理器安装主题与功能插件。常用操作包括:多标签浏览、Vim 风格导航、使用 fzf/fd 快速搜索、集成 ripgrep 进行内容检索,通过 Rclone 插件访问云盘,使用挂载管理器处理远程文件。若需要自定义预览或预加载策略,可在 Lua 插件中实现并热加载。
总结与展望
Yazi 用现代系统编程与异步架构,将终端文件管理器的体验提升到新的高度:既“快”又“可玩”。它在任务管理、插件生态、VFS/DDS 与媒体预览等方面形成明显的差异化竞争力,适合追求效率与可控性的开发者与运维用户。未来随着插件生态进一步成熟、VFS 适配更多后端,以及与更多工具的联动,Yazi 有潜力成为终端文件管理的事实标准之一。当然也需注意:Lua 定制带来学习曲线,高级功能的配置与维护需要投入时间。总体而言,如果你在寻找一款既极速又可深度定制的跨平台终端文件管理器,Yazi 值得尝试与长期投入。
项目信息
| 项目名称 | sxyazi/yazi |
| 编程语言 | Rust |
| Star 数 | 43107 |
| Fork 数 | 1051 |
| 主题标签 | android, asyncio, cli, command-line, concurrency, cross-platform, developer-tools, file-explorer, file-manager, filesystem, linux, macos, neovim, productivity, rust, terminal, tui, vim, windows |