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、旧包装版本与第三方封装可能不同——请在本机核实。