fzf 命令
fzf 是一个用 Go 语言编写的通用命令行模糊查找器,它能够快速筛选和定位文件、目录、命令历史、进程等内容,大幅提升命令行工作效率。当与其他工具结合使用时,能发挥出更强大的功能。
安装方法
macOS
bash
# 使用 Homebrew 安装
brew install fzf
# 安装 shell 扩展(提供快捷键和自动补全功能)
/usr/local/opt/fzf/install
Linux
bash
# Debian/Ubuntu 系统
sudo apt install fzf
# 从源码安装
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
Windows
- 使用 Chocolatey:
choco install fzf - 使用 Scoop:
scoop install fzf
基本使用
简单搜索文件
bash
fzf
管道输入
bash
# 搜索历史命令
history | fzf
# 搜索进程
ps aux | fzf
# 搜索 git 仓库中的文件
git ls-files | fzf
结合其他命令
bash
# 搜索并打开文件
vim $(fzf)
# 搜索并删除文件
rm -f $(fzf)
快捷键
安装 shell 扩展后,fzf 提供了以下默认快捷键:
| 快捷键 | 功能 |
|---|---|
Ctrl-T |
在当前目录搜索文件/目录并插入 |
Ctrl-R |
搜索命令历史并执行 |
Alt-C |
搜索目录并切换到该目录 |
在 fzf 界面中使用的快捷键:
| 快捷键 | 功能 |
|---|---|
Enter |
选择并确认 |
Ctrl-J/Ctrl-K |
上下移动 |
Ctrl-D |
向下翻页 |
Ctrl-U |
向上翻页 |
Ctrl-C |
取消 |
Tab |
多选(可以使用 Shift-Tab 取消选择) |
配置选项
可以通过环境变量来配置 fzf 的行为:
基本配置
bash
# 默认选项
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --border"
# 文件搜索命令
export FZF_DEFAULT_COMMAND="fd --type f --hidden --follow"
# Ctrl-T 快捷键的配置
export FZF_CTRL_T_OPTS="--preview 'cat {}'"
# Ctrl-R 快捷键的配置
export FZF_CTRL_R_OPTS="--sort"
# Alt-C 快捷键的配置
export FZF_ALT_C_OPTS="--preview 'ls -la {}'"
高级配置 - 多列过滤
bash
# 添加列匹配快捷键
export FZF_DEFAULT_OPTS="--bind 'alt-1:change-query(:1:)+clear-query' \
--bind 'alt-2:change-query(:2:)+clear-query' \
--bind 'alt-0:change-query()+clear-query'"
高级功能
多条件组合筛选
结合 fzf 的扩展搜索语法,可以实现更精确的筛选:
^abc- 匹配以 abc 开头的条目- `abc—
title: fzf 命令
description: fzf 命令是一个用于在命令行中进行模糊搜索的工具,支持多种输入方式,如文件、目录、进程等。它可以帮助用户快速找到需要的内容,提高工作效率。
keywords:
- fzf
- 命令行工具
- 模糊搜索
- 文件搜索
- 目录搜索
- 进程搜索
- 工作效率
- 匹配以 abc 结尾的条目
!abc- 排除包含 abc 的条目'abc- 精确匹配 abc
预览功能
bash
# 搜索文件并预览内容
fzf --preview 'cat {}'
# 搜索目录并预览文件列表
fzf --preview 'ls -la {}' --height 60%
使用示例
1. 搜索并编辑文件
bash
# 使用 vim 打开搜索到的文件
vim $(fzf)
# 使用 neovim 打开多个文件
nvim $(fzf -m)
2. 搜索历史命令
bash
# 使用 Ctrl-R 快捷键搜索历史命令
# 或者直接使用管道
history | fzf
3. 搜索并切换目录
bash
# 使用 Alt-C 快捷键搜索目录
# 或者直接使用
cd $(find . -type d | fzf)
4. 搜索并杀死进程
bash
kill -9 $(ps aux | fzf | awk '{print $2}')
5. 搜索 git 相关内容
bash
# 搜索 git 历史提交
git log --oneline | fzf
# 搜索 git 分支
git branch | fzf
集成使用
与 Vim 集成
在 Vim 中可以使用 fzf.vim 插件来集成 fzf 功能:
vim
" 安装 fzf.vim 插件(使用 vim-plug)
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug 'junegunn/fzf.vim'
" 基本映射
nnoremap <C-p> :Files<CR> " 搜索文件
nnoremap <C-g> :GFiles<CR> " 搜索 git 文件
nnoremap <C-b> :Buffers<CR> " 搜索缓冲区
nnoremap <C-f> :Rg<CR> " 使用 ripgrep 搜索内容
与 i3 窗口管理器集成
bash
# 在 ~/.config/i3/config 中添加快捷键绑定
# fzf 文件选择器,按 Super+f 启动
bindsym $mod+f exec --no-startup-id "alacritty -e fzf"
# 搜索并切换工作区
bindsym $mod+Shift+f exec --no-startup-id "i3-msg workspace $(i3-msg -t get_workspaces | jq -r '.[].name' | fzf)"
特点
- 交互式搜索:实时显示搜索结果,支持模糊匹配
- 高性能:使用 Go 语言编写,搜索速度快
- 管道友好:可以与任何命令行工具结合使用
- 高度可配置:通过环境变量和命令行参数自定义行为
- 跨平台:支持 macOS、Linux、Windows
- 丰富的快捷键:提供常用操作的快捷键绑定
fzf 是命令行爱好者的必备工具之一,通过合理的配置和使用,可以极大地提升日常工作效率。
最后更新:2026-02-05