核心功能
把文件列表、命令历史等任意候选集变成可交互模糊筛选的界面,并提供事件驱动的构建模块,让 shell 脚本升级成终端应用。适合长期在终端工作、希望减少输入与切换成本的开发者。
功能亮点
单文件二进制分发
以单个可执行文件发布,无额外运行时依赖,各平台安装都很省事
毫秒级筛选性能
经过针对性优化,可在毫秒级别处理百万量级的候选项
事件驱动可编程
通过 --bind 绑定按键与事件,把普通 shell 脚本改造成交互式界面
开箱即用的集成
自带多种 shell 与 Vim/Neovim 集成,配置后即可用 CTRL-R 搜历史
适用场景
• 在成千上万个文件中交互式挑选目标文件再交给编辑器打开
• 用 CTRL-R 模糊检索历史命令,替代反复按方向键翻历史
• 为脚本或运维工具搭一个自定义的终端选择菜单
安装配置
bash
Homebrew (macOS / Linux): brew install fzf Debian 9+ / Ubuntu 19.10+: sudo apt install fzf Fedora: sudo dnf install fzf Arch Linux: sudo pacman -S fzf Windows: winget install fzf choco install fzf scoop install fzf Git 克隆 + 官方安装脚本: git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf ~/.fzf/install 启用 shell 集成: bash: eval "$(fzf --bash)" zsh: source <(fzf --zsh) fish: fzf --fish | source
使用方法
bash
find * -type f | fzf > selected # 从标准输入筛选,结果写入文件
vim $(fzf) # 选中文件后用 vim 打开
fzf --print0 | xargs -0 -o vim # 更稳妥的写法,避免空结果问题
fzf --bind 'enter:become(vim {})' # 回车后直接变成 vim 进程
fzf -m # 多选模式,用 TAB 标记多项
CTRL-T # 把选中的文件/目录粘贴到命令行
CTRL-R # 从命令历史中筛选
ALT-C # cd 进入选中的目录
vim **<TAB> # 触发模糊补全关键指标
尚未核验对标产品,此处只列本工具自身指标,不做对比结论。
指标fzf
价格免费
开源是
上手难度进阶
相关工具
同类工具
优点
- 以单个二进制文件分发,安装与在团队内分发都很简单
- 经过性能优化,百万量级候选项也能在毫秒内完成筛选
- 自带 Bash/Zsh/Fish/Nushell/Vim/Neovim 集成与 CTRL-T、CTRL-R、ALT-C 绑定
- 事件驱动架构,可用 --bind 自行拼装交互流程与界面
缺点
- 只负责交互式筛选,候选列表通常仍需 find、rg、fd 等命令提供
- 安装后需额外执行一步 shell 集成配置,快捷键才会生效
- 高级定制集中在命令行选项与 --bind 表达式上,深入使用有学习成本