如何在 macOS 和 Linux 安装 fzf:模糊搜文件与命令历史快捷键

装好 fzf 并启用 shell 集成,用 Ctrl+T 和 Ctrl+R 在终端里模糊搜文件与命令历史。

终端里翻目录、找文件、捞历史命令,如果还在用 ls 加肉眼扫,或者反复按上箭头,fzf 能把候选列表变成可模糊过滤的交互面板。

搜索 fzf 模糊查找 安装 macOS Linux 的人,通常要的是:装好、记住几个快捷键、能搜文件和命令历史。下面按官方仓库 junegunn/fzf 写可核对步骤。

安装 fzf 启用 shell 集成 Ctrl+T / Ctrl+R 搜文件与历史

fzf 解决什么问题

01

模糊匹配,不必记全名

输入 conf nginx 也能命中 /etc/nginx/nginx.conf。子序列匹配比完整路径快得多。

02

嵌进 shell,不必切窗口

官方安装脚本会给 bash/zsh/fish 挂上 Ctrl+T、Ctrl+R、Alt+C。选中结果直接插入命令行或切换目录。

03

可接任意列表源

默认用 find,也可换成 fd、rg --files,或管道 git branch | fzf。工具本身只负责过滤与选择。

在 macOS 与 Linux 安装

  1. 1

    macOS:Homebrew 安装并启用集成

    运行 brew install fzf,再执行 $(brew --prefix)/opt/fzf/install。脚本会问是否启用按键绑定和模糊补全,首次建议全选 yes,然后重开终端或 source ~/.zshrc。

  2. 2

    Debian / Ubuntu:用发行版包或官方脚本

    快速路径:sudo apt update && sudo apt install fzf。若要最新版,可从 GitHub Releases 下载二进制,或 git clone 后运行 ./install --all。装完确认 fzf --version 有输出。

  3. 3

    Fedora / Arch 等

    Fedora:sudo dnf install fzf。Arch:sudo pacman -S fzf。装好后同样运行发行版文档里的 fzf --bash 或官方 install 脚本,把绑定写进 shell 配置。

  4. 4

    验证三个默认快捷键

    在 zsh/bash 里试:Ctrl+T 搜文件、Ctrl+R 搜历史、Alt+C(macOS 上有时是 Option+C)按目录跳转。没反应就先查配置里是否有 source .../fzf.zsh 或 fzf-key-bindings.zsh。

必记按键与面板操作

按键 作用 场景
Ctrl+T 模糊选文件,插入当前命令行 补全路径、附件、配置
Ctrl+R 模糊搜 shell 历史 找回昨天跑过的长命令
Alt+C 选目录并 cd 进去 在项目树里跳目录
↑ / ↓ 移动候选 面板打开后导航
Enter 确认选择 插入路径或执行历史
Esc 取消 回到原命令行

搜文件:默认 find 与更快的源

单独运行 fzf 时,默认通过 FZF_DEFAULT_COMMAND 或内置 find 列文件。大仓库建议改用 fd 或 rg --files,在 ~/.zshrc 里写:

# 用 fd 列文件(需先安装 fd)
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"

# 或用 ripgrep 列文件
# export FZF_DEFAULT_COMMAND='rg --files --hidden --follow'

管道用法同样常见:git ls-files | fzf 只在 Git 跟踪文件里搜;ls *.md | fzf | xargs cat 选中后交给下游命令。团队结对时,找到文件比记住完整路径省时间——需要同步讨论时,可从 wbroom 首页 开浏览器房间,步骤见 创建与加入房间。

搜命令历史:Ctrl+R 与持久化

Ctrl+R 会读取当前 shell 的 HISTFILE。若历史太短,检查 HISTSIZE、SAVEHIST(zsh)或 HISTSIZE、HISTFILESIZE(bash)是否过小。fzf 的交互式历史比默认逐条翻找更快,输入片段即可缩小范围。

fzf 不是替代品,而是终端里的过滤器:任何能输出行的命令,都可以接到 | fzf 后面做交互选择。

装完没快捷键
多半是没跑官方 install 脚本,或没 source 生成的 fzf.zsh / fzf.bash。重开终端后再试。
搜得太慢
把 FZF_DEFAULT_COMMAND 从递归 find 换成 fd 或限制目录;排除 node_modules、.git。
与 IDE 内置终端冲突
部分 IDE 预览终端不转发 Ctrl+T。在系统自带的 Terminal、iTerm2、Kitty 里验证绑定是否正常。

还想核对的问题

fzf 和 ripgrep、fd 是什么关系?

fzf 负责交互式过滤;ripgrep(rg)和 fd 负责更快地产出候选列表。三者常组合使用,但不是同一个包。

Windows 能用吗?

官方支持在 Git Bash、WSL 和原生 Windows 二进制下使用。本文聚焦 macOS 与 Linux 终端;Windows 路径请查 README 的 Windows 小节。

如何卸载或关闭按键绑定?

删除包管理器安装的 fzf,并移除 ~/.zshrc 或 ~/.bashrc 里 source ... fzf 相关行。官方 install --uninstall 可清理绑定(以当前 README 为准)。

能否多选文件?

可以。启动时加 --multi,面板里用 Tab 标记多项,Enter 一次输出多行,适合批量操作。

开始一场会议