fzf 命令行模糊查找器
fzf 是一款用 Go 编写的通用命令行模糊查找工具,也是可编程的交互式终端工具箱。它能毫秒级处理百万级条目,内置 Bash、Zsh、Fish、Vim、Neovim 集成,可把普通 shell 脚本变成丰富的终端应用。
爱鲜报评分
0 人评分
84k
星数
否
中文
Go
主语言
是
活跃
340
贡献者
人工分析
EDITORIAL推荐理由
fzf 是终端效率工具中的标杆项目,8 万余 Star 与长期活跃维护证明其稳定可靠。它以单二进制分发、安装简单,模糊匹配速度快,且通过事件驱动机制支持自定义预览、重载与菜单,几乎能嵌入任何命令行工作流。对经常使用终端、Vim/Neovim 或 tmux 的开发者来说,属于装上就回不去的效率基建。
适用场景
- 文件与目录快速定位和打开
- 命令历史、进程、主机名等模糊补全
- Git 分支/提交、日志的交互式筛选
- Vim/Neovim 内文件与内容搜索
- 构建自定义终端菜单与交互式脚本
优点
- 单二进制分发,跨平台安装方便
- 模糊匹配性能强,可处理海量候选
- 可编程性强,支持预览窗口、动态重载与事件绑定
- 官方提供多 shell 与编辑器集成,开箱即用
- MIT 协议,社区活跃、生态成熟
缺点
- 需要一定 shell 脚本基础才能发挥全部能力
- 默认键位与选项较多,新手需阅读文档
- 终端环境差异(如 Windows 终端)可能影响体验
- 高级用法(预览、reload、绑定)调试成本较高
fzf 是什么
fzf 是一款用 Go 编写的通用命令行模糊查找器,同时也是一个可编程的交互式终端工具箱。它可以从标准输入接收任意候选列表,让你用模糊匹配快速筛选,并把选中结果输出给后续命令。
除了「选文件」,fzf 更像终端里的交互层:你可以用它浏览命令历史、预览数据、构建自定义菜单,把原本枯燥的 shell 脚本变成带预览和快捷键的终端应用。
核心特性
- 便携:以单个二进制文件分发,安装即用。
- 快速:针对海量条目优化,可在毫秒级处理百万级候选。
- 可编程:事件驱动架构,支持绑定按键、动态重载候选列表、执行外部程序。
- 开箱即用:内置 Bash、Zsh、Fish、Nushell、Vim、Neovim 集成。
安装与 shell 集成
常见安装方式包括 Homebrew、mise、各 Linux 发行版包管理器以及 Windows 的 Chocolatey/Scoop/Winget 等。例如:
brew install fzf
# 或
sudo apt install fzf
安装后建议启用 shell 集成,以获得快捷键绑定与模糊补全(具体命令以官方文档为准)。
典型用法
最基础的用法是把候选列表通过管道交给 fzf:
# 从文件列表中选择一个文件
find . -type f | fzf
# 在命令历史中模糊搜索
history | fzf
配合 --preview 可以在右侧实时预览内容,配合 --height 或 --popup 可以控制显示模式,让交互更贴近现代终端体验。
搜索语法与定制
fzf 支持前缀精确匹配、后缀匹配、排除匹配等查询语法,也允许通过环境变量和命令行选项定制配色、布局与键位。官方还提供主题演练场,方便调整外观。
适用人群
- 经常在终端里操作文件、Git、进程的开发者;
- 使用 Vim/Neovim、tmux 并希望统一交互体验的用户;
- 想用脚本构建轻量终端工具的效率爱好者。
fzf 的学习曲线不算陡峭,但要真正发挥预览、重载和自定义绑定等高级能力,需要一定的 shell 脚本基础。
评论
- 暂无评论,来写第一条吧。