Linux 下载、安装 fzf,终端里的搜索引擎(附安装包fzf-0.74.2-linux_amd64.tar.gz)
- 2026-10-14 13:10:34
对应视频教程: B站:https://www.bilibili.com/video/BV1Bru46aEX7 抖音:https://v.douyin.com/FHaA5KQ65T8/ 小红书:http://xhslink.cn/o/7iHa6h7vkke
文章目录
1. fzf 简介 2. v0.74.2 版本亮点 2.1 性能优化 2.2 功能改进 2.3 Bug 修复 3. 获取安装包 4. 安装 4.1 shell 集成配置 5. 使用 5.1 经典使用场景 5.2 基本使用 5.3 命令行快捷键 5.4 搜索语法 5.5 预览窗口 5.6 常用环境变量与高级用法

1. fzf 简介
fzf 是韩国开发者 Junegunn Choi 用 Go 语言编写的命令行模糊查找器(fuzzy finder),自 2013 年创建以来已持续维护十余年,GitHub 上积累了约 8 万颗星标,被公认为终端用户最不可或缺的命令行工具之一。它采用 MIT 开源许可证,以单个静态编译的二进制文件分发,无任何运行时依赖。作者 Junegunn Choi 同时也是极简 Vim 插件管理器 vim-plug 的作者,其开发的 fzf.vim 插件同样广受欢迎。
fzf 要解决的,是 Linux 终端里一个很常见、又很头疼的问题:面前有一长串东西要挑选时,怎么快速挑出想要的那一个。
举个例子:你想打开一个文件,但只记得名字里有 report;你想从几百条历史命令里找回上周敲过的那个部署命令;你想在几十个 docker 容器里找到名字含 db 的那个。过去只能一行行翻、靠眼睛找。而 fzf 做的事情很简单——它把这份列表展示成一个可以即时搜索的界面,你输入几个记得的关键字(哪怕记不全、顺序不对),它立刻把匹配项筛出来,回车即选中。
fzf 本身不关心列表里装的是什么。你把什么数据喂给它(文件、命令历史、进程、git 提交、服务器地址……),它就在这份数据里帮你筛选。所以它被称为"终端里的搜索引擎":列表内容由你决定,筛选体验由 fzf 负责。也正因为它只管"筛选加选择"这一件事,可以和任何命令组合使用,成为日常终端操作里最常用的那块积木。
fzf 的核心特点:
- 便携(Portable)
:单个二进制文件,下载即可运行,无依赖 - 快速(Fast)
:针对毫秒级处理数百万条目的场景优化 - 可编程(Programmable)
:基于事件驱动架构,可构建自定义终端界面与工作流 - 开箱即用(Batteries-included)
:内置 Bash、Zsh、Fish、Nushell、Vim 与 Neovim 集成脚本
2. v0.74.2 版本亮点
该版本汇集了 5 位贡献者 的 25 条 贡献。
v0.74.2 是 fzf 在 2026 年 8 月初发布的一个版本,重点优化了短查询性能,并修复了一批跨 shell、跨平台的细节问题:
2.1 性能优化
- 短查询大幅提速
:短查询会扫描最大的候选集,首次按键需要扫描整个输入。单字符查询提速最高 2.4 倍,双字符查询提速最高 1.4 倍 - 更快的排序
:搜索结果排序更快,跳过冗余的基数(radix)遍历
2.2 功能改进
change-border-label和 transform-border-label现在可作用于 tmux 或 Zellij 浮动窗格的原生边框fzf 现在可以在 Windows 的 --height模式下检测终端窗口大小变化
2.3 Bug 修复
修复预览命令发出的 Kitty 图形序列被 tmux 误当作窗格标题请求的问题 修复 --preview-window ~N导致预览顶部图片撕裂的问题修复匹配高亮位置不确定的问题 修复 fzf 作为库使用时, Run()返回后信号和窗口大小调整处理器仍残留的问题fish:修复历史命令受用户初始化脚本影响的问题,并改进 CTRL-R 中时间戳的颜色 zsh:修复 perl 可用时 CTRL-R 不传递 fzf 退出状态的问题 zsh:修复 ALT-C 导致 chpwd钩子函数被调用两次的问题
3. 获取安装包
如果访问 GitHub 不便,安装包及中文文档:https://hanshuixin.org/go/2259(内含 fzf-0.74.2-linux_amd64.tar.gz、README 中英对照、发布说明中英对照和 LICENSE)。
适用于 Linux x86_64(amd64)。
fzf 其他版本:https://hanshuixin.org/resource/software_integrated_package/Linux/fzf
Linux安装fzf-v0.74.2(fzf-0.74.2-linux_amd64).zip├── fzf-0.74.2-linux_amd64.tar.gz ← 解压后部署使用├── Linux安装fzf-v0.74.2(fzf-0.74.2-linux_amd64).pdf├── README/│ ├── README.md│ └── README-中文版.md├── 发布说明/│ ├── RELEASE-NOTES.md│ └── RELEASE-NOTES-中文版.md└── LICENSE
4. 安装
fzf-0.74.2-linux_amd64.tar.gz 是 fzf 官方发布的 Linux amd64/x86_64 二进制发行包,内含 Go 静态编译的单文件可执行程序,无运行时依赖,不绑定特定发行版,适用于绝大多数 Linux 环境。
# 解压发行包tar -xzf fzf-0.74.2-linux_amd64.tar.gz# 将可执行文件部署到系统路径(推荐 /usr/local/bin)sudo mv fzf /usr/local/bin/# 验证安装fzf --version
4.1 shell 集成配置
fzf 的核心价值在于与 shell 的深度集成。在 shell 配置文件中添加对应的一行,即可启用命令行快捷键(CTRL-T、CTRL-R、ALT-C)和模糊补全:
bash(
~/.bashrc)eval ”$(fzf --bash)”source ~/.bashrc
zsh(
~/.zshrc)source <(fzf --zsh)fish(
~/.config/fish/config.fish)fzf --fish | source
重连一次终端后生效
--bash、--zsh、--fish选项仅在新版本 fzf 中可用;旧版本可在/shell目录中逐个 source 对应脚本文件。
5. 使用
5.1 经典使用场景
fzf 的用法本质上就一句话:把一份列表交给它,输入关键字筛选,回车选择。下面是最常见的几个场景。这些场景基于全新安装的 Debian 12,所需命令全部系统自带(fzf 本身除外),无需额外安装 git、docker、fd、bat 等工具。
场景一:打开一个只记得一半名字的文件
首先创建一个演示目录并放入几个示例文件:
mkdir -p ~/demo && cd ~/demotouch monthly-report.md quarterly-report.md notes.txt config.yaml
# 输入 cat 后加两个星号再按 TAB,直接进入模糊补全cat **
界面出现后,输入 report,列表立即只剩文件名里带 report 的文件,上下键选中,回车即显示内容。整个过程不用记完整路径。
想用编辑器打开时,把
cat换成vi即可(Debian 12 自带 vim-tiny 提供的vi,nano需另行安装)。
场景二:找回以前敲过的命令
# 先执行几条命令,让历史记录里有一些内容ls -lacat /etc/os-releasedf -h
# 然后按 CTRL-R,输入关键字,历史命令瞬间筛出匹配项# 例:只记得刚才查过磁盘,输入 df
按一次回车即可重新执行;再按一次 CTRL-R 可切换为按时间顺序显示。
场景三:快速跳进某个目录
cd ~# 先创建几个层级目录mkdir -p ~/project/backend/config ~/project/frontend/src ~/docs
# 按 ALT-C,输入目录名关键字,选中后直接 cd 进入# 例:想进 ~/project/backend/config,输入 config
省去一层层 cd 的麻烦。
场景四:杀某个进程
# 先启动一个后台进程,作为待查找的目标sleep 1000 &
# 然后按 kill -9 后加两个星号再按 TAB,输入 sleep 选中kill -9 **
不用先 ps 查 PID 再手动抄下来,模糊补全会列出匹配的 PID 供选择。
场景五:在已安装的软件包里快速定位
# 列出 Debian 所有已安装的软件包,输入关键字瞬间筛选dpkg -l | fzf
例如输入 python,即可在数百个已装软件包里迅速找到 python3 等带 python 的软件包。
场景六:在任何命令的输出里挑选
# 从系统服务列表里挑一个(查看运行状态)systemctl list-units --type=service | fzf
5.2 基本使用
fzf 从 STDIN 读取列表,把选中的条目写到 STDOUT,因此可以嵌入任何命令管道:
# 从命令历史中模糊查找history | fzf
没有 STDIN 管道时,fzf 会遍历当前目录下的文件系统来生成文件列表。在查找器界面中,CTRL-K / CTRL-J(或 CTRL-P / CTRL-N)上下移动光标,Enter 选择条目,CTRL-C / CTRL-G / ESC 退出;多选模式(-m)下用 TAB 和 Shift-TAB 标记多个条目,并支持鼠标操作。
5.3 命令行快捷键
配置 shell 集成后,可在 bash、zsh、fish、Nushell 中使用以下快捷键:
CTRL-T:遍历文件与目录,将选中路径粘贴到命令行 CTRL-R:从命令历史中模糊查找命令;再次按下切换为按时间顺序排序 ALT-C:模糊匹配目录并 cd进入
5.4 搜索语法
fzf 默认支持模糊匹配,输入的关键字可以不全、可以顺序不对,它会按匹配度排序。需要精确控制时,可用以下语法:
sbtrkt | sbtrkt 的条目 | |
'wild | wild 的条目 | |
'wild' | wild 的条目 | |
^music | music 开头的条目 | |
.mp3$ | .mp3 结尾的条目 | |
!fire | fire 的条目 | |
!^music | music 开头的条目 | |
!.mp3$ | .mp3 结尾的条目 |
单个竖线字符(|)充当 OR 运算符:^core go$ | rb$ | py$ 匹配以 core 开头、且以 go、rb 或 py 结尾的条目。
5.5 预览窗口
用 --preview 选项开启预览窗口,fzf 自动以当前行为参数启动外部进程并显示结果,选中前就能看到内容:
# 预览文件内容(cat 为系统自带)find . -type f | fzf --preview 'cat {}'# 预览软件包详情dpkg -l | fzf --preview 'apt-cache show {2} 2>/dev/null | head -20'
若想获得彩色高亮的预览效果,可安装 bat 后把预览命令换成
bat --color=always {};不装 bat 时用系统自带的cat即可。
--preview-window 选项可自定义预览窗口的大小、位置和边框;预览窗口支持 ANSI 颜色与图片显示(Kitty graphics、iTerm2 inline images、Sixel 协议)。
5.6 常用环境变量与高级用法
# 默认输入来源:不传管道时用 find 生成文件列表export FZF_DEFAULT_COMMAND='find . -type f'# 默认选项:反向布局 + 底部 40% 高度export FZF_DEFAULT_OPTS='--height 40% --layout reverse --border'# 多选并把选中文件用 vi 打开(become 把 fzf 转变为新进程)fzf --multi --bind 'enter:become(vi {+})'# 交互式 grep 集成:输入时实时搜索当前目录下的文件内容: | fzf --bind 'start:reload:grep -rn ”” .' \--bind 'change:reload:grep -rn {q} . || true' \--bind 'enter:become(vi +{2} {1})' \--ansi --disabled --delimiter : --nth 2..
其他常用选项可通过手册页查看:fzf --man 或 man fzf。