如何在 macOS 與 Linux 安裝 fzf:模糊搜檔案與命令歷史快捷鍵
裝好 fzf 並啟用 shell 整合,用 Ctrl+T 與 Ctrl+R 在終端機模糊搜檔案與命令歷史。
終端機裡翻目錄、找文件、捞歷史命令,如果还在用 ls 加肉眼扫,或者反复按上箭头,fzf 能把候选列表变成可模糊过滤的交互面板。
搜索 fzf 模糊查找 安裝 macOS Linux 的人,通常要的是:装好、记住几个快捷键、能搜檔案和命令歷史。下面按官方儲存庫 junegunn/fzf 写可核对步骤。
fzf 解决什么问题
模糊匹配,不必记全名
输入 conf nginx 也能命中 /etc/nginx/nginx.conf。子序列匹配比完整路径快得多。
嵌进 shell,不必切窗口
官方安裝脚本会给 bash/zsh/fish 挂上 Ctrl+T、Ctrl+R、Alt+C。选中结果直接插入命令列或切换目錄。
可接任意列表源
預設用 find,也可换成 fd、rg --files,或管道 git branch | fzf。工具本身只负责过滤與选择。
在 macOS 與 Linux 安裝
-
1
macOS:Homebrew 安裝并啟用集成
執行
brew install fzf,再执行$(brew --prefix)/opt/fzf/install。脚本会问是否啟用按鍵綁定和模糊补全,首次建议全选 yes,然后重开終端機或source ~/.zshrc。 -
2
Debian / Ubuntu:用發行版包或官方脚本
快速路径:
sudo apt update && sudo apt install fzf。若要最新版,可从 GitHub Releases 下载二进制,或git clone后執行./install --all。装完確認fzf --version有输出。 -
3
Fedora / Arch 等
Fedora:
sudo dnf install fzf。Arch:sudo pacman -S fzf。装好后同样執行發行版文件裡的fzf --bash或官方install脚本,把綁定写进 shell 配置。 -
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 一次输出多行,适合批次操作。