一款全能的命令行搜索神器,它能快速搜索文件、命令历史、进程、Git提交记录等,并支持预览内容。无论是查找配置文件、回顾旧命令,还是定位代码中的问题,都能助你一臂之力。

一个适用于任何类型列表的交互式过滤程序;文件、命令历史记录、进程、主机名、书签、git 提交等。它实现了一种“模糊”匹配算法,因此您可以快速输入带有省略字符的模式,并且仍然可以获得所需的结果,节省大量时间。
让我们举个例子。当你想用编辑器打开一个文件时。一般情况会这样操作:
- 首先,运行
ls或find查看当前目录下的文件列表。 - 浏览列表找到要打开的文件。
- 如果列表太长,则向上滚动,或使用
grep再次运行该命令以缩小列表范围。例如:ls | grep foo - 最后,在命令行中键入文件名以打开它。例如,
vim THE_FILE,可能需要按很多次 TAB 才能打开a/file/deep/down/in/the/directory/tree。
git 打开模式也类似,基本上是在用各种列表一遍又一遍地重复同样的过程。fzf 的创建就是为了简化这一核心流程。
优点
- 可移植,无依赖性
- 极快的速度
- 用途极其广泛
- 插件集成:
bash/zsh/fish集成、tmux 集成、Vim/Neovim 插件
安装
使用 Homebrew
brew install fzf
Linux
| 包管理程序 | Linux 版本 | 命令行 |
|---|---|---|
| APK | Alpine Linux | sudo apk add fzf |
| APT | Debian 9+/Ubuntu 19.10+ | sudo apt install fzf |
| Conda | conda install -c conda-forge fzf |
|
| DNF | Fedora | sudo dnf install fzf |
| Nix | NixOS, etc. | nix-env -iA nixpkgs.fzf |
| Pacman | Arch Linux | sudo pacman -S fzf |
| pkg | FreeBSD | pkg install fzf |
| pkgin | NetBSD | pkgin install fzf |
| pkg_add | OpenBSD | pkg_add fzf |
| Portage | Gentoo | emerge --ask app-shells/fzf |
| Spack | spack install fzf |
|
| XBPS | Void Linux | sudo xbps-install -S fzf |
| Zypper | openSUSE | sudo zypper install fzf |
Windows
| 包管理程序 | 命令行 |
|---|---|
| Chocolatey | choco install fzf |
| Scoop | scoop install fzf |
| Winget | winget install fzf |
| MSYS2 (pacman) | pacman -S $MINGW_PACKAGE_PREFIX-fzf |
设置 shell 集成
FZF 附带 shell 集成脚本,这些脚本设置了有用的键绑定和模糊补全功能,因此即使您不熟悉 shell 脚本,FZF 仍然有用。
-
bash (~/.bashrc)
eval "$(fzf --bash)" -
zsh (~/.zshrc)
source <(fzf --zsh) -
fish (~/.config/fish/config.fish)
fzf --fish | source