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