跳到正文
发现
fzf:命令行模糊查找器
cli开发者工具

fzf:命令行模糊查找器

通用命令行模糊查找器与交互式终端工具箱,可快速筛选文件、命令历史等任意列表。

admin
发布于 2026-10-28
浏览
4
访问
0
下载
0
版本
v0.74.5
平台
Windows、macOS、Linux
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。

详细介绍

项目简介

fzf 是一个通用的命令行模糊查找器,也是一个交互式终端工具箱。它从 STDIN 读取候选列表,并把选中项写到 STDOUT,因此可以嵌入任意 shell 脚本。无论是选择文件、浏览命令历史、预览数据、在复杂数据集中做模糊匹配导航,还是构建自定义菜单和工作流,fzf 都提供了把 shell 脚本变成丰富终端应用的积木。

<img src="https://raw.githubusercontent.com/junegunn/i/master/fzf-preview.png" width=640>

核心特点:

  • Portable:以单个二进制文件分发,安装简单
  • Fast:经过优化,可在毫秒级处理数百万条目
  • Programmable:事件驱动架构,可构建自定义终端界面与工作流
  • Batteries-included:自带 Bash、Zsh、Fish、Nushell、Vim、Neovim 集成

主要功能

  • 从 STDIN 读取列表并交互式筛选,输出选中项
  • 没有 STDIN 管道时,自动遍历当前目录下的文件系统获取文件列表
  • 多种显示模式:--height 模式与 --popup 模式
  • 支持搜索语法、环境变量配置与外观自定义
  • Shell 集成:键绑定(CTRL-T、CTRL-R、ALT-C)与模糊补全
  • 模糊补全支持文件与目录、进程 ID、主机名、环境变量 / 别名,并可为 bash 和 zsh 自定义补全
  • 预览窗口与图片预览
  • 支持在运行时重新加载候选列表(reload),可做交互式 ripgrep 集成、多数据源切换等
  • 提供 Vim / Neovim 插件支持

安装与使用

使用 Homebrew(macOS 或 Linux):

brew install fzf

使用 mise:

mise use -g fzf@latest

Linux 发行版包管理器:sudo apt install fzf(Debian 9+/Ubuntu 19.10+)、sudo dnf install fzf(Fedora)、sudo pacman -S fzf(Arch Linux)、sudo apk add fzf(Alpine Linux)、sudo zypper install fzf(openSUSE)、nix-env -iA nixpkgs.fzf(NixOS)等。

Windows 包管理器:choco install fzf、scoop install fzf、winget install fzf。

使用 git 安装:

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

安装脚本会向 shell 配置文件添加内容,以修改 $PATH 并设置 shell 集成。也可以直接下载官方二进制:https://github.com/junegunn/fzf/releases

设置 shell 集成(键绑定与模糊补全):

# bash
eval "$(fzf --bash)"

# zsh
source <(fzf --zsh)

# fish
fzf --fish | source

Nushell 不支持管道到 source,安装脚本会在 autoload 目录生成文件;若未使用安装脚本,可手动生成:

mkdir ($nu.default-config-dir | path join "autoload")
fzf --nushell | save -f ($nu.default-config-dir | path join "autoload" "_fzf_integration.nu")

基本用法:

# 从管道读取列表,输出选中项
find * -type f | fzf > selected

# 无管道时遍历当前目录
vim $(fzf)

Vim/Neovim 插件(以 vim-plug 为例):

Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'

junegunn/fzf 提供基础库函数,fzf#install() 确保使用最新二进制;junegunn/fzf.vim 是另一个项目,提供多种实用命令。

升级方式随安装方式不同:git 安装执行 cd ~/.fzf && git pull && ./install,brew 执行 brew update; brew upgrade fzf,vim-plug 执行 :PlugUpdate fzf。

注意事项

  • --bash、--zsh、--fish、--nushell 选项仅在较新版本的 fzf 中可用;旧版本或需要更精细控制时,可直接 source /shell 目录下的单个脚本,文件位置因包管理器而异(例如 apt show fzf)。
  • 可在 source 脚本时把对应的 *_COMMAND 变量设为空字符串来禁用 CTRL-T、CTRL-R、ALT-C 绑定,例如 bash:FZF_CTRL_R_COMMAND= FZF_ALT_C_COMMAND= eval "$(fzf --bash)";在 source 之后再设置变量不会生效。
  • 使用 Neovim 且偏好 Lua 插件时,可考虑 fzf-lua。

本作品整理自 GitHub 开源项目 junegunn/fzf,原作者 @junegunn,许可证 MIT。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. v0.74.5当前版本

    修复 tmux 3.8+ 下 --popup 取消缩放的问题、--gap-line 截断字形簇、转义序列被部分消费与按键丢失、reload 后 focus 事件不触发等缺陷,并修复 fzf-tmux 与 zsh 补全的安全漏洞。

评论