yazi

2025-02-10

rust

少年安得长少年,海波尚变为桑田。——李贺

https://github.com/sxyazi/yazi
https://yazi-rs.github.io/

在开发者和系统管理员的工具箱里,一个高效的文件管理器往往能显著提高工作效率。Yazi 是一款基于 Rust 编写的终端文件管理器,专为需要快速、灵活和异步文件管理的用户设计。Yazi 的核心特点之一是它支持完全异步的 I/O 操作,使得文件管理变得更加高效,同时极大提升了响应速度。

Yazi 的目标是提供一个简洁且高效的终端文件管理体验。通过非阻塞的异步 I/O,所有的 I/O 操作都能异步执行,任务会分散到多个线程上,最大化地利用系统资源。这意味着用户不必再等待耗时的文件操作,这样的设计使得 Yazi 的操作变得更加顺畅,尤其在处理大文件或多个文件时,效率尤为突出。

主要特性

  • 完全异步支持:所有 I/O 操作都是异步的,CPU 任务被分配到多个线程,充分利用系统资源,从而加速文件操作。
  • 强大的异步任务调度与管理:实时的任务进度更新、任务取消和优先级分配等功能,使得文件管理变得更加灵活可控。
  • 内置多种图像协议支持:通过集成 Überzug++ 和 Chafa,Yazi 支持几乎所有终端的图像显示,极大提升了视觉体验。
  • 并行插件系统:支持 UI 插件(重写大部分 UI)、功能插件、预览器/预加载器/搜索器等插件,所有插件都可以用 Lua 脚本进行扩展。
  • 数据分发服务:基于客户端-服务器架构(无需额外的服务器进程),通过 Lua 的发布-订阅模型实现跨实例的通信和状态持久化。
  • 包管理器:通过简单的命令安装插件和主题,支持插件更新和版本锁定,保持文件管理的高度定制化。
  • 集成常用工具:与 ripgrepfdfzfzoxide 等工具的深度集成,提升文件查找和导航效率。
  • 支持 Vim-like 输入/选择/确认等功能:自动补全 cd 路径,便于快速切换目录。
  • 多标签支持和文件预览:支持跨目录选择、滚动预览(支持视频、PDF、压缩包、代码等),提高了文件管理的效率。
  • 批量重命名、可视模式、文件选择器:内建 Git 集成和挂载管理器等功能,极大提升了文件操作的灵活性。
  • 主题系统、鼠标支持、垃圾桶功能:提供丰富的定制选项,用户可以根据需求调整界面样式。

安装与使用

Yazi 的安装过程非常简单,支持多种平台,用户只需要下载对应的包,解压后即可启动。更方便的是,Yazi 支持通过 Docker、Docker-Compose 和 Kubernetes 进行部署,用户可以根据自己的需求选择最适合的方式。

Yazi 的配置和使用也非常直观,通过官方网站提供的文档,用户可以轻松上手并开始使用。如果你之前使用过类似的工具(比如 rangermidnight commander),那么上手 Yazi 会非常简单。

图像预览

Yazi 内置了对多种终端图像协议的支持,如 Kitty、iTerm2、WezTerm 等,不同的终端可以使用不同的协议进行图像显示。对于不支持图像显示的终端,Yazi 还提供了文本艺术(ASCII art)作为回退选项,确保即便在资源受限的环境下,用户也能获得良好的体验。

结语

如果你正在寻找一款高效且强大的终端文件管理工具,Yazi 无疑是一个值得尝试的选择。它通过 Rust 的高性能和异步 I/O,实现了极速的文件操作,同时提供了丰富的插件和扩展功能,极大提升了用户的文件管理体验。无论是处理日常文件,还是管理复杂的文件系统,Yazi 都能为你提供高效、流畅的操作体验。

更多信息和文档,请访问 Yazi 的 官方网站 或 GitHub 页面。