如何在 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 一次输出多行,适合批次操作。

開始一場會議