三個開源終端工具分別對應寫程式碼時的三個環節:Yazi 用來瀏覽和預覽檔案,fzf 用來從一長串候選裡挑出一項,Lazygit 用來檢查和暫存 Git 改動。本文只根據各專案官方文件裡寫明的行為,說明怎麼把它們串成一套流程。核對的版本:fzf 0.74.5、Lazygit 0.66.2、Yazi 26.9.1。Boloop 沒有為本文安裝或執行這些工具,請以你實際安裝版本的文件為準。

三個工具各做什麼、不做什麼

  • fzf 從標準輸入讀取候選行,把選中的那一行寫到標準輸出。沒有管道輸入時,用內建的檔案遍歷生成候選列表。它篩選的是名稱,不會搜尋每個檔案的內容。
  • Yazi 是用 Rust 寫的終端檔案管理器,支援檔案預覽、多標籤、跨目錄選擇、搜尋整合和批次重新命名。檔案型別識別需要 file,其他預覽要看可選工具。
  • Lazygit 是 Git 的終端介面,能看 diff,也能只暫存某個 hunk 或某幾行。它會執行真正改變倉庫狀態的 Git 操作,先在可以恢復的倉庫裡練手。

第 1 步:配置 fzf 的 shell 整合

fzf 的 README 給每種 shell 一行配置:

# bash
eval "$(fzf --bash)"
# zsh
source <(fzf --zsh)
# fish
fzf --fish | source

配置後有三個快捷鍵:CTRL-T 把選中的檔案和目錄粘到命令列,CTRL-R 從歷史命令裡挑一條粘到命令列,ALT-C 進入選中的目錄。先試最基本的選擇(ls | fzf,回車選中、Esc 取消),再考慮自定義觸發符。Boloop 的 fzf 頁面記錄了一條關於 Bash 自定義補全觸發符的未關閉反饋。

第 2 步:用 Yazi 開啟專案,退出時留在該目錄

輸入 yazi 啟動,按 q 退出,按 F1 或 ~ 開啟幫助。Yazi 快速上手文件建議加一個 y shell 包裝函式:退出 Yazi 時,shell 會切到你剛才瀏覽的目錄。請從官方快速上手頁面複製對應 shell 的版本,不要手打。

在 Yazi 裡,預設鍵位把 z 繫結為“透過 fzf 跳到檔案或目錄”,Z 繫結為“透過 zoxide 跳到目錄”。z 需要 fzf 0.53.0 或更新版本,zoxide 也依賴 fzf。前兩個工具就在這裡接上。

預覽依賴額外工具:JSON 用 jq,PDF 用 poppler,影片縮圖用 ffmpeg,找檔案用 fd,搜內容用 rg。圖片預覽取決於終端協議(Kitty、iTerm2、Sixel 或降級方案),請對照官方相容表檢查你用的終端。

第 3 步:用 Lazygit 檢查並暫存

用包裝函式退出 Yazi 後,shell 已經在專案目錄裡。執行 lazygit,README 裡寫的步驟是:

  1. 在改動的檔案上按 0,聚焦它的 diff。
  2. 按空格暫存當前 hunk,並跳到下一個。
  3. 按 a 逐行選擇,按 v 選一段範圍。
  4. 按 Tab 切到已暫存面板,在那裡按空格取消暫存。
  5. 按 c 直接提交,不用離開 diff。

提交前看一眼已暫存面板。乾淨的暫存 diff 只說明改了什麼,不能證明改動能用。可以配合我們的 AI 生成程式碼驗收清單一起用。

完整流程

  1. y 開啟 Yazi,預覽檔案,按 z 用 fzf 跳轉。
  2. q 退出,shell 停在該目錄。
  3. 自己改程式碼,或讓編碼 agent 改。
  4. lazygit 檢查,只暫存該進這次提交的部分,然後提交。
  5. CTRL-R 找回上次跑過的測試或構建命令。

我們的判斷:這個順序適合有 agent 參與的開發,因為 agent 可能一次改很多檔案,Lazygit 的按 hunk 暫存方便把它們拆成小提交。這是觀點,不是測評結果。

常見問題

三個工具必須一起裝嗎?

不用,每個都能單獨用。Yazi 的 z 跳轉需要 fzf(0.53.0 或更新);Lazygit 不依賴另外兩個。

fzf 會搜尋檔案內容嗎?

不會。fzf 只篩選它收到的行。要搜內容,Yazi 文件把 rg(ripgrep)列為可選工具。

Yazi 為什麼不顯示圖片預覽?

圖片預覽取決於終端協議,有些終端還有最低版本要求,終端複用器也會影響結果。請按 Yazi 的圖片預覽指南檢查你的環境。

能直接在正式倉庫裡試 Lazygit 嗎?

它執行的是真實的 Git 操作。先在練習倉庫或可恢復的副本里試,並檢視你所裝版本的快捷鍵說明。

本文對應哪些版本?

fzf 0.74.5、Lazygit 0.66.2、Yazi 26.9.1,核對時間為 2026 年 10 月下旬到 11 月初。快捷鍵可能隨版本變化。

來源

  • fzf README:https://github.com/junegunn/fzf
  • Lazygit README:https://github.com/jesseduffield/lazygit
  • Yazi 安裝:https://yazi-rs.github.io/docs/installation
  • Yazi 快速上手:https://yazi-rs.github.io/docs/quick-start
  • Yazi 預設鍵位:https://github.com/sxyazi/yazi/blob/main/yazi-config/preset/keymap-default.toml