核心是三件事:装对工具(fzf、fd、bat)、设好默认行为(用fd替代find)、配齐预览交互(ctrl+t带bat预览);再通过frg函数实现rg+fzf文本搜索与vim跳转。
在 macos 中配置 fzf 实现高效文件检索,核心是三件事:装对工具、设好默认行为、配齐预览交互。它不是单个命令跑起来就行,而是把 fzf 和 fd(快速路径查找)、bat(带语法高亮的 cat)串起来用,再绑定常用快捷键。
安装基础工具链
打开终端依次执行:
-
brew install fzf fd bat—— 三个主力工具一次装齐 -
$(brew --prefix)/opt/fzf/install—— 运行官方安装脚本,自动配置Ctrl+T(查文件)、Ctrl+R(查历史)、Alt+C(切目录)等快捷键,并启用模糊补全(比如输入vim **<tab></tab>就能呼出文件选择) - 重启终端或运行
source ~/.zshrc使配置生效
优化文件检索源:用 fd 替代 find
fzf 默认用 find 列文件,慢且不智能。换成 fd 后,默认跳过 .git、node_modules、隐藏文件等,速度提升明显。
在 ~/.zshrc 中添加:
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git --exclude node_modules'
alias ff='fzf --preview "bat --style=numbers,header --color=always {}" --preview-window right:60%:wrap'
这样输入 ff 就能模糊查文件,右侧实时预览内容,支持换行和行号。
增强预览与快捷键体验
光看文件名不够,得边搜边看内容。推荐在 ~/.config/fzf/key-bindings.zsh 中自定义 Ctrl+T 行为:
export FZF_CTRL_T_OPTS="
--preview '[[ -f {} ]] && bat --style=numbers,header --color=always {} || echo {}'
--preview-window right:60%:wrap
--bind '?:toggle-preview'
--bind 'ctrl-space:toggle-preview'
--height 40%"
按 Ctrl+T 呼出文件列表后,可按 ? 或 Ctrl+Space 开/关预览,方向键浏览时右侧同步刷新,遇到配置文件、日志、代码片段一眼就能确认是不是目标。
进阶组合:文本内容搜索 + fzf 交互筛选
要查某段代码或配置值?用 ripgrep(rg)配合 fzf:
- 先装:
brew install ripgrep - 加函数到
~/.zshrc:
frg() {
local query="${1:-}"
rg --column --line-number --no-heading --color=always --smart-case "$query" \
| fzf --ansi --preview 'awk -F: \'{print $1}\' {} | xargs -I{} bat --style=numbers,header --color=always {}' \
--preview-window up:30%:wrap \
--bind 'enter:execute-silent(vim +{2} {1})'
}
运行 frg api_timeout,就能列出所有含该词的文件+行号,上下键选中后回车直接用 vim 跳转到对应行。











