fzf 是通用的命令列模糊查找器:它讀取一組候選文字行,讓你互動篩選,並把選取的行寫到標準輸出。它本身不會搜尋檔案正文。
當你已經有(或能產生)候選列表——檔案路徑、歷史命令、行程行、主機名稱——並需要快速選取一項時使用它。若目標是全文搜尋檔案內容,請用其他工具;只有在你主動把內容搜尋結果再交給 fzf 時,才談得上「內容搜尋 + 選取」的組合流程。
TL;DR
- fzf 負責篩選並選取文字行,本身不是全文搜尋引擎。
- 沒有管線輸入時,它會在目前目錄下巡訪檔案以產生候選。
- 先掌握普通選取(Enter / Esc),再加 Shell 快捷鍵或自訂補全觸發符。
- 可選的 Shell 整合(CTRL-T / CTRL-R / ALT-C 與模糊補全)與核心查找器是分開的。
- 本站軟體頁核對過的發行版:0.74.5。本文撰寫時 Boloop 未安裝或執行 fzf。
fzf 做什麼
官方文件稱 fzf 為通用命令列模糊查找器。常見流程:
- 從標準輸入提供候選行,或在標準輸入為終端時用預設檔案巡訪器產生列表。
- 輸入內容以模糊(或精確)比對縮小列表。
- 按 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 與發行頁再確認。
來源
- fzf README — Junegunn Choi 與貢獻者。
- fzf releases。
- 本站相關:fzf 軟體、終端工作流程。
邊界
本文撰寫時 Boloop 未安裝或執行 fzf。陳述來自公開官方文件與本站既有署名軟體說明。自訂 Shell、舊包裝版本與第三方封裝可能不同——請在本機核實。