Yazi: 用 Rust 打造的超快速終端檔案管理器
title: "Yazi: 用 Rust 打造的超快速終端檔案管理器" author: "sxyazi" date: 2026-02-28 source: "https://github.com/sxyazi/yazi" views: null github_stars: 33300 category:
- 開源工具
- 終端工具
- Rust
- 檔案管理 tags:
- Yazi
- Rust
- 終端機
- 檔案管理器
- 非同步IO
- TUI
- 開源 status: published
Yazi: 用 Rust 打造的超快速終端檔案管理器
專案: Yazi
GitHub: sxyazi/yazi
Stars: ⭐ 33.3K
語言: Rust
License: MIT
發布日期: 2026-02-28
💡 什麼是 Yazi?
名稱由來
Yazi(意思是「鴨子」🦆)是一個用 Rust 編寫的終端檔案管理器,基於非阻塞異步 I/O。
目標
提供高效、用戶友好、可自訂的檔案管理體驗。
🚀 核心特性
1. ⚡ 完全異步支援
💡 新文章:Why is Yazi Fast?
技術實現:
- ✅ 所有 I/O 操作都是異步的
- ✅ CPU 任務分散到多個執行緒
- ✅ 最大化資源利用
結果:
- 🚀 極快的檔案操作
- 🔥 充分利用多核心 CPU
- ⚡ 無阻塞的使用者體驗
2. 💪 強大的異步任務調度與管理
功能:
- 📊 即時進度更新
- ❌ 任務取消
- 🎯 內部任務優先級分配
價值:
- 長時間操作(大檔案複製)不阻塞 UI
- 用戶可隨時取消操作
- 重要任務優先執行
3. 🖼️ 內建多種圖片協議支援
支援協議:
| 終端機 | 協議 | 支援 |
|---|---|---|
| kitty | Kitty unicode placeholders | ✅ 內建 |
| iTerm2 | Inline images protocol | ✅ 內建 |
| WezTerm | Inline images protocol | ✅ 內建 |
| Konsole | Kitty old protocol | ✅ 內建 |
| foot | Sixel graphics format | ✅ 內建 |
| Ghostty | Kitty unicode placeholders | ✅ 內建 |
| Windows Terminal | Sixel graphics format | ✅ 內建 |
| st (Sixel patch) | Sixel graphics format | ✅ 內建 |
| Warp | Inline images protocol | ✅ 內建 |
| Tabby | Inline images protocol | ✅ 內建 |
| VSCode | Inline images protocol | ✅ 內建 |
| Black Box | Sixel graphics format | ✅ 內建 |
| Bobcat | Inline images protocol | ✅ 內建 |
| X11 / Wayland | Window system protocol | ☑️ 需要 Überzug++ |
| Fallback | ASCII art (Unicode block) | ☑️ 需要 Chafa |
覆蓋範圍:
- ✅ 幾乎所有現代終端機
- ✅ 多種協議自動檢測
- ✅ 降級機制(ASCII art)
整合:
4. 🌟 內建代碼高亮與圖片解碼
功能:
- 📝 代碼高亮(語法著色)
- 🖼️ 圖片解碼(多種格式)
優化:
- ⚡ 預載機制(Pre-loading)
- 🚀 大幅加速圖片與普通檔案載入
體驗:
- 即時預覽代碼
- 快速瀏覽圖片
- 無需等待外部工具
5. 🔌 並發插件系統
三種插件類型:
A. UI 插件
- 重寫大部分 UI
- 自訂外觀與佈局
B. 功能插件
- 添加新功能
- 擴展核心能力
C. 自訂組件
- Previewer(預覽器)
- Preloader(預載器)
- Spotter(偵測器)
- Fetcher(取得器)
技術:
- 📜 只需要一些 Lua 程式碼
- ⚡ 並發執行
- 🔧 高度可擴展
6. ☁️ 虛擬檔案系統(VFS)
功能:
- 🌐 遠端檔案管理
- 🔍 自訂搜尋引擎
應用場景:
- SSH/SFTP 遠端檔案
- 雲端儲存整合
- 自訂資料來源
7. 📡 資料分發服務(DDS)
架構:
- 🏗️ 客戶端-伺服器架構
- ❌ 無需額外伺服器進程
整合:
- 📜 Lua 為基礎的發布-訂閱模型
- 🔄 跨實例通信
- 💾 狀態持久化
價值:
- 多個 Yazi 實例可互相通信
- 共享狀態與設定
- 協作式工作流
8. 📦 套件管理器
功能:
- 🚀 一鍵安裝插件與主題
- 🔄 保持更新
- 📌 固定特定版本
體驗:
- 類似 NPM/Cargo
- 無需手動管理依賴
- 社群生態系統
9. 🧰 整合工具
整合的工具:
價值:
- ✅ 無縫整合
- ✅ 最佳實踐工具鏈
- ✅ 提升生產力
10. 💫 Vim 風格組件
組件:
- ⌨️ Input(輸入)
- 🎯 Pick(選擇)
- ✅ Confirm(確認)
- ❓ Which(提示)
- 📢 Notify(通知)
特性:
- 🚀 自動補全(cd 路徑)
- ⌨️ Vim 鍵綁定
- 🎨 一致的 UI 體驗
11. 🏷️ 進階功能
檔案操作:
- 📑 多標籤支援
- ✂️ 跨目錄選擇
- 📜 可滾動預覽(影片、PDF、壓縮檔、代碼、目錄等)
批次作業:
- 🔄 批量重命名
- 📦 壓縮檔解壓
- 👁️ 視覺模式
整合:
- 📁 檔案選擇器
- 🔀 Git 整合 - git.yazi
- 💿 掛載管理 - mount.yazi
12. 🎨 使用者體驗
介面:
- 🎨 主題系統
- 🖱️ 滑鼠支援
- 🗑️ 垃圾桶(回收站)
- 📐 自訂佈局
終端支援:
- ⌨️ CSI u(鍵盤協議)
- 📋 OSC 52(剪貼板整合)
📊 專案狀態
當前階段
公開測試版,可作為日常驅動使用
注意:
- ⚠️ Yazi 目前正在積極開發中
- ⚠️ 預期會有破壞性變更
- ✅ 但已足夠穩定供日常使用
📚 資源
官方文檔
- 安裝指南: https://yazi-rs.github.io/docs/installation
- 功能介紹: https://yazi-rs.github.io/features
- 技術文章: Why is Yazi Fast?
社群
- Discord Server (英文為主): https://discord.gg/qfADduSdJu
- Telegram Group (中文為主): https://t.me/yazi_rs
🎯 技術深度分析
1. 為什麼 Yazi 這麼快?
A. 非阻塞異步 I/O
傳統同步 I/O:
讀取檔案 A → 等待 → 處理 → 讀取檔案 B → 等待 → 處理
- ❌ 大量等待時間
- ❌ CPU 閒置
Yazi 異步 I/O:
讀取檔案 A | 讀取檔案 B | 讀取檔案 C
↓ ↓ ↓
處理 A 處理 B 處理 C
- ✅ 並發操作
- ✅ 充分利用 I/O
- ✅ CPU 持續工作
B. 多執行緒 CPU 任務
任務分配:
- 🖼️ 圖片解碼 → Thread 1
- 📝 語法高亮 → Thread 2
- 📊 檔案排序 → Thread 3
- 🎨 UI 渲染 → Main Thread
優勢:
- ✅ 多核心充分利用
- ✅ 不阻塞 UI
- ✅ 響應速度快
C. 預載機制
智慧預載:
- 👁️ 預測用戶下一步操作
- 📥 提前載入可能需要的檔案
- 🖼️ 提前解碼圖片
結果:
- ⚡ 即時響應
- 🚀 接近零延遲
2. 插件系統架構
Lua 為基礎
為什麼選 Lua?
- ✅ 輕量級(嵌入式友好)
- ✅ 快速(JIT 編譯)
- ✅ 簡單(容易學習)
- ✅ 安全(沙盒執行)
插件類型
1. UI 插件:
-- 自訂狀態列
function Status:render()
-- 自訂 UI 邏輯
end
2. 功能插件:
-- 添加新命令
function plugin:entry()
-- 自訂功能
end
3. 自訂組件:
-- 自訂預覽器
function Previewer:new(file)
-- 預覽邏輯
end
並發執行
- 🔀 插件可並發運行
- 🚫 不阻塞主執行緒
- 🎯 自動任務調度
3. 虛擬檔案系統(VFS)
抽象層
Yazi UI
↓
VFS Layer (抽象)
↓
├─ Local FS
├─ SFTP
├─ S3
└─ Custom
優勢:
- ✅ 統一介面
- ✅ 透明訪問
- ✅ 易於擴展
應用場景
1. 遠端檔案管理:
yazi sftp://user@host/path
2. 雲端儲存:
yazi s3://bucket/path
3. 自訂來源:
-- 實作 VFS 介面
function CustomFS:read(path)
-- 自訂讀取邏輯
end
4. 資料分發服務(DDS)
架構
Yazi Instance 1 ←→ DDS ←→ Yazi Instance 2
↕
State Storage
發布-訂閱模型
發布:
-- Instance 1 發布事件
dds:publish("file-changed", {path = "/foo"})
訂閱:
-- Instance 2 訂閱事件
dds:subscribe("file-changed", function(data)
-- 處理事件
end)
應用場景
1. 狀態同步:
- 多個 Yazi 實例同步選擇狀態
- 共享書籤
- 同步設定
2. 協作式工作流:
- A 實例複製檔案
- B 實例即時看到變更
💡 關鍵洞察
1. Rust + Async = 性能與安全
Rust 優勢:
- ✅ 記憶體安全(無 GC)
- ✅ 並發安全(無資料競爭)
- ✅ 零成本抽象
- ✅ 豐富的生態系統
Async I/O:
- ✅ 高並發
- ✅ 低資源消耗
- ✅ 快速響應
結果:
- 🚀 極快速度
- 🔒 可靠穩定
- 💪 資源高效
2. 插件生態系統的重要性
官方插件:
- git.yazi - Git 整合
- mount.yazi - 掛載管理
社群插件:
- 主題
- 預覽器
- 功能擴展
價值:
- ✅ 核心保持輕量
- ✅ 功能無限擴展
- ✅ 社群驅動創新
3. 終端圖片預覽的複雜性
挑戰:
- 🤔 終端機標準各異
- 🤔 協議不統一
- 🤔 相容性問題
Yazi 解決方案:
- ✅ 支援多種協議
- ✅ 自動檢測最佳協議
- ✅ 降級機制(ASCII art)
覆蓋率:
- 🎯 13+ 種終端機內建支援
- 🎯 X11/Wayland 支援(via Überzug++)
- 🎯 Fallback(via Chafa)
4. 使用者體驗設計
Vim 風格:
- ✅ 鍵盤優先
- ✅ 高效操作
- ✅ 學習曲線平緩(Vim 用戶)
現代化 UI:
- ✅ 滑鼠支援
- ✅ 美觀主題
- ✅ 即時預覽
平衡:
- ⌨️ 鍵盤用戶滿意
- 🖱️ 滑鼠用戶也能用
- 🎨 外觀不妥協
🔗 與其他檔案管理器比較
| 特性 | Yazi | ranger | lf | nnn |
|---|---|---|---|---|
| 語言 | Rust | Python | Go | C |
| 異步 I/O | ✅ | ❌ | ❌ | ❌ |
| 圖片預覽 | ✅ 13+ 協議 | ✅ 有限 | ⚠️ 基本 | ❌ |
| 插件系統 | ✅ Lua 並發 | ✅ Python | ⚠️ Shell | ❌ |
| 效能 | 🚀 極快 | ⚠️ 慢 | ✅ 快 | ✅ 快 |
| 虛擬 FS | ✅ | ❌ | ❌ | ❌ |
| 跨實例通信 | ✅ DDS | ❌ | ❌ | ❌ |
| 套件管理 | ✅ | ❌ | ❌ | ❌ |
結論:
- Yazi 是功能最全面的現代終端檔案管理器
- 效能與功能兼具
🚀 快速開始
安裝
# Arch Linux
sudo pacman -S yazi
# macOS
brew install yazi
# Cargo (跨平台)
cargo install --locked yazi-fm
# Nix
nix-shell -p yazi
基本使用
# 啟動 Yazi
yazi
# 在指定目錄啟動
yazi /path/to/directory
鍵盤快捷鍵(預設)
j/k- 上下移動h/l- 進入/離開目錄space- 選擇檔案y/x/p- 複製/剪下/貼上d- 刪除(移至垃圾桶)r- 重命名/- 搜尋q- 退出
🔖 標籤
#Yazi #Rust #終端機 #檔案管理器 #非同步IO #TUI #開源 #Vim風格 #插件系統 #虛擬檔案系統
📝 總結
Yazi 是什麼?
- 🦆 用 Rust 編寫的超快速終端檔案管理器
- ⚡ 基於非阻塞異步 I/O
- 🔌 強大的 Lua 插件系統
- 🖼️ 完善的圖片預覽支援
核心優勢:
- ⚡ 極快速度:異步 I/O + 多執行緒
- 🔧 高度可擴展:插件 + VFS + DDS
- 🎨 優秀體驗:Vim 風格 + 現代 UI
- 🌐 豐富生態:社群插件 + 主題
適合誰?
- ⌨️ 終端機愛好者
- 🚀 追求效能的使用者
- 🔧 需要自訂工作流的開發者
- 🖼️ 需要圖片預覽的使用者
結論:
Yazi 是下一代終端檔案管理器,結合了 Rust 的效能、現代的架構設計與優秀的使用者體驗。
GitHub Stars: ⭐ 33.3K - 廣受社群認可!
最後更新: 2026-02-28
整理者: 多多
🔗 相關資源
- GitHub: sxyazi/yazi
- 官網: yazi-rs.github.io
- Discord: discord.gg/qfADduSdJu
- Telegram: t.me/yazi_rs