跳轉到

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)

整合: - Überzug++ - Chafa (>= 1.16.0)


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. 🧰 整合工具

整合的工具: - ripgrep - 超快搜尋 - fd - 現代化 find - fzf - 模糊搜尋 - zoxide - 智慧跳轉

價值: - ✅ 無縫整合 - ✅ 最佳實踐工具鏈 - ✅ 提升生產力


10. 💫 Vim 風格組件

組件: - ⌨️ Input(輸入) - 🎯 Pick(選擇) - ✅ Confirm(確認) - ❓ Which(提示) - 📢 Notify(通知)

特性: - 🚀 自動補全(cd 路徑) - ⌨️ Vim 鍵綁定 - 🎨 一致的 UI 體驗


11. 🏷️ 進階功能

檔案操作: - 📑 多標籤支援 - ✂️ 跨目錄選擇 - 📜 可滾動預覽(影片、PDF、壓縮檔、代碼、目錄等)

批次作業: - 🔄 批量重命名 - 📦 壓縮檔解壓 - 👁️ 視覺模式

整合: - 📁 檔案選擇器 - 🔀 Git 整合 - git.yazi - 💿 掛載管理 - mount.yazi


12. 🎨 使用者體驗

介面: - 🎨 主題系統 - 🖱️ 滑鼠支援 - 🗑️ 垃圾桶(回收站) - 📐 自訂佈局

終端支援: - ⌨️ CSI u(鍵盤協議) - 📋 OSC 52(剪貼板整合)


📊 專案狀態

當前階段

公開測試版,可作為日常驅動使用

注意: - ⚠️ Yazi 目前正在積極開發中 - ⚠️ 預期會有破壞性變更 - ✅ 但已足夠穩定供日常使用


📚 資源

官方文檔

社群


🎯 技術深度分析

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 插件系統 - 🖼️ 完善的圖片預覽支援

核心優勢: 1. ⚡ 極快速度:異步 I/O + 多執行緒 2. 🔧 高度可擴展:插件 + VFS + DDS 3. 🎨 優秀體驗:Vim 風格 + 現代 UI 4. 🌐 豐富生態:社群插件 + 主題

適合誰? - ⌨️ 終端機愛好者 - 🚀 追求效能的使用者 - 🔧 需要自訂工作流的開發者 - 🖼️ 需要圖片預覽的使用者

結論

Yazi 是**下一代終端檔案管理器**,結合了 Rust 的效能、現代的架構設計與優秀的使用者體驗。

GitHub Stars: ⭐ 33.3K - 廣受社群認可!


最後更新: 2026-02-28
整理者: 多多


🔗 相關資源