fzf 是通用的命令列模糊查找器:它讀取一組候選文字行,讓你互動篩選,並把選取的行寫到標準輸出。它本身不會搜尋檔案正文。

當你已經有(或能產生)候選列表——檔案路徑、歷史命令、行程行、主機名稱——並需要快速選取一項時使用它。若目標是全文搜尋檔案內容,請用其他工具;只有在你主動把內容搜尋結果再交給 fzf 時,才談得上「內容搜尋 + 選取」的組合流程。

TL;DR

  • fzf 負責篩選並選取文字行,本身不是全文搜尋引擎。
  • 沒有管線輸入時,它會在目前目錄下巡訪檔案以產生候選。
  • 先掌握普通選取(Enter / Esc),再加 Shell 快捷鍵或自訂補全觸發符。
  • 可選的 Shell 整合(CTRL-T / CTRL-R / ALT-C 與模糊補全)與核心查找器是分開的。
  • 本站軟體頁核對過的發行版:0.74.5。本文撰寫時 Boloop 未安裝或執行 fzf。

fzf 做什麼

官方文件稱 fzf 為通用命令列模糊查找器。常見流程:

  1. 從標準輸入提供候選行,或在標準輸入為終端時用預設檔案巡訪器產生列表。
  2. 輸入內容以模糊(或精確)比對縮小列表。
  3. 按 Enter 把選取寫到標準輸出,或用 Esc / Ctrl-C / Ctrl-G 取消。

README 範例:find * -type f | fzf > selected。用選取結果開啟編輯器常見寫法是 vim $(fzf)(README 也提示更穩妥的 fzf --print0 | xargs -0 -o vim 與 become(...))。

fzf 不做什麼

  • 不是全文程式碼搜尋。 篩選路徑不等於搜尋檔案內容。官方進階範例在需要互動式內容搜尋時,會把其他工具(如 ripgrep)與 fzf 組合——那是組合工作流程,不是預設行為。
  • 不是自動的 Shell 快捷鍵。 快捷鍵與模糊補全需要Shell 整合。只裝二進位檔不保證已有 CTRL-R 歷史搜尋。
  • 不是 Git 介面。 暫存與檢視 diff 屬於 Lazygit 一類工具;fzf 只幫你挑選你提供的行或路徑。

第一次成功:從小列表選一項

繫結快捷鍵之前,先在你理解的列表上驗證:

printf '%s\n' alpha beta gamma | fzf

輸入片段,用 Ctrl-J / Ctrl-K(或方向鍵)移動,按 Enter,確認列印結果;用 Esc 取消。確認後再按需啟用 Shell 整合以取得 CTRL-T / CTRL-R / ALT-C。

安裝方式與版本核對見專案 README 與本站 fzf 軟體頁。

何時需要 Shell 整合

二進位可用之後,Shell 整合提供文件中的繫結(bash / zsh / fish / Nushell):

| 繫結 | 作用(依 README) | | --- | --- | | CTRL-T | 把選取的檔案/目錄貼到命令列 | | CTRL-R | 貼上選取的歷史命令 | | ALT-C | cd 到選取目錄 |

模糊補全(bash/zsh 預設觸發符 **)同樣可選且因 Shell 而異。自訂補全觸發符前,優先使用文件預設值。

FAQ

fzf 會搜尋檔案內容嗎?

預設不會。它從候選行中選取。搜尋檔案內容需要其他程式(如 ripgrep),你可以把其輸出再交給 fzf。

第一天必須做 Shell 整合嗎?

不必。核心用法是:標準輸入 → 互動篩選 → 標準輸出。需要文件中的快捷鍵或模糊補全時再整合。

fzf 等於 Lazygit 或 Yazi 嗎?

不等於。fzf 選行;Yazi 是終端檔案管理器;Lazygit 是終端 Git UI。組合循環見終端工作流程:fzf、Lazygit、Yazi。

本文對應哪個版本?

行為說明依據官方 README。Boloop 軟體頁最近核對的發行版為 0.74.5。請在本機用 fzf --version 與發行頁再確認。

來源

  1. fzf README — Junegunn Choi 與貢獻者。
  2. fzf releases。
  3. 本站相關:fzf 軟體、終端工作流程。

邊界

本文撰寫時 Boloop 未安裝或執行 fzf。陳述來自公開官方文件與本站既有署名軟體說明。自訂 Shell、舊包裝版本與第三方封裝可能不同——請在本機核實。