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