在終端機裡管檔案,ls 加 cd 加 cp 來來去去。
想要一個像 Finder 一樣可以快速瀏覽、看圖預覽的界面,但又不想離開 terminal。
yazi 就是這個東西,vim 鍵位,Rust 寫的,快。
什麼是 yazi
yazi(中文「鴨子」)是用 Rust 寫的終端機檔案管理器,設計上強調非阻塞的非同步 I/O。所有檔案操作、預覽、縮圖都在背景處理,不卡 UI。
主要功能:
- 圖片預覽:支援 kitty、iTerm2、WezTerm、Sixel 等多種終端圖片協議
- 程式碼高亮:內建語法高亮,不需要外部工具
- 多格式預覽:影片縮圖(需 FFmpeg)、PDF(需 poppler)、壓縮檔、目錄樹
- vim 鍵位:
h/j/k/l導航,/搜尋,visual mode 批量選取 - Lua 外掛:UI 可客製,外掛生態活躍
- 整合工具:fzf、zoxide、ripgrep、fd 深度整合
安裝
| |
必要依賴只有 file 指令(通常已內建)。其他(ffmpeg、poppler 等)都是可選的,裝了就能預覽對應格式。
啟動與基本操作
| |
| 按鍵 | 動作 |
|---|---|
h / ← | 上層目錄 |
l / → | 進入目錄 / 開啟檔案 |
j / k | 上下移動 |
gg / G | 移到頂/底 |
Space | 選取(多選) |
y | 複製 |
d | 剪下 |
p | 貼上 |
D | 刪到資源回收筒 |
r | 重新命名 |
/ | 搜尋(當前目錄) |
f | fzf 快速跳轉 |
z | zoxide 跳轉 |
q | 離開,cd 到目前目錄 |
shell 整合:離開後 cd 到當前目錄
這個功能需要在 shell 裡加一行 wrapper function,讓 yazi 離開時自動 cd 到你最後瀏覽的目錄:
| |
| |
之後用 yy 代替 yazi 啟動,離開時就會自動跳到你所在的目錄。
圖片預覽:各終端的支援
yazi 啟動時自動偵測終端機,選擇最適合的圖片協議。用 yazi --debug 可以看到偵測結果:
| |
| 終端機 | 支援方式 |
|---|---|
| kitty | Kitty unicode placeholders(最佳) |
| iTerm2 / WezTerm / Ghostty | Inline images protocol |
| foot / Windows Terminal | Sixel |
| Alacritty | 不支援原生協議(見下方) |
Alacritty 圖片預覽
Alacritty 不支援任何終端圖片協議(kitty protocol、Sixel 都沒有),yazi 預設在 Alacritty 裡看不到圖片。解法依平台不同:
macOS:用 Chafa
macOS 上 Überzug++ 的 X11/Wayland backend 被停用,所以沒辦法疊圖。yazi 會自動 fallback 到 Chafa,用 ASCII/Unicode 字符在 terminal 裡模擬圖片。
Chafa 通常裝 yazi 時已一起裝,確認:
| |
沒裝的話:
| |
確認 yazi 偵測到 Chafa:
| |
看到 Chafa 就代表圖片預覽已啟用,直接開 yazi 就能看到效果。畫質是字符模擬,不是真正的像素圖,但在 terminal 裡已經夠用。
Linux:用 Überzug++
Linux 有 X11 或 Wayland,可以用 Überzug++ 把真正的圖片疊在 terminal 視窗上,畫質比 Chafa 好很多。
| |
裝完後 yazi 自動偵測:
| |
微調圖片位置(選用)
Überzug++ 用 overlay 方式疊圖,位置或大小有時會偏,在 ~/.config/yazi/yazi.toml 調整:
| |
改完清快取:yazi --clear-cache
tmux 內的圖片預覽
不論 Chafa 或 Überzug++,tmux 裡需要在 ~/.tmux.conf 加:
| |
設定檔
設定檔放在 ~/.config/yazi/:
| |
用 ya 套件管理器安裝主題和外掛:
| |
小結
yazi 比起 ranger 或 lf,速度快很多,主要是非同步架構的差異。vim 鍵位習慣之後,大部分的檔案操作都不需要離開終端。
Alacritty 使用者:macOS 裝 Chafa 就夠,yazi 自動偵測。Linux 用 Überzug++ 效果更好,畫質是真正的圖片而不是字符模擬。兩者都不需要額外設定,裝完開 yazi 就能看到圖片預覽。
