文件搜索神器fzf,名气很大,很快,很强大。
fzf 是一个通用的命令行模糊查找器。
它是一个交互式 Unix 命令行过滤器,可用于任何列表;文件、命令历史、进程、主机名、书签、git 提交等。
项目地址:
https://github.com/junegunn/fzf
优点
- 便携,无依赖
- 极快
- 最全面的功能集
- 灵活的布局
- 包括电池
- Vim/Neovim 插件、键绑定和模糊自动完成
安装
Homebrew
您可以使用Homebrew(在 macOS 或 Linux 上)安装 fzf。
brew install fzf
使用 Linux 包管理器
Package Manager | Linux Distribution | Command |
---|---|---|
APK | Alpine Linux | sudo apk add fzf |
APT | Debian 9+/Ubuntu 19.10+ | sudo apt-get 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 |
XBPS | Void Linux | sudo xbps-install -S fzf |
Zypper | openSUSE | sudo zypper install fzf |
其他系统的安装参情请参考https://github.com/junegunn/fzf
用法
fzf 将启动交互式查找器,从 STDIN 读取列表,并将所选项目写入 STDOUT。
find * -type f | fzf > selected
如果没有 STDIN 管道,fzf 将使用 find 命令获取不包括隐藏文件的文件列表。(您可以使用 覆盖默认命令 FZF_DEFAULT_COMMAND)
vim $(fzf)
使用取景器
CTRL-K
/CTRL-J
(或CTRL-P
/CTRL-N
)上下移动光标Enter
键选择项目,CTRL-C
/CTRL-G
/ESC
退出- 在多选模式下(
-m
),TAB
并Shift-TAB
标记多个项目 - Emacs 样式键绑定
- 鼠标:滚动、单击、双击;多选模式下的 shift-click 和 shift-scroll
配置
配置
如果要更方便的使用fzf
,而不输入那么多命令,那就直接在shell的配置里加一个环境变量即可。
这个环境变量名叫FZF_DEFAULT_OPTS
,所有fzf的配置都写在这一个变量里:
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --preview '(highlight -O ansi {} || cat {}) 2> /dev/null | head -500'"
我的配置如下:
编辑环境变量nvim ~/.zshrc
#fzf配置
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --preview '(highlight -O ansi {} || cat {}) 2> /dev/null | head -500'"
function vf(){
nvim $(fzf)
}
这样在命令行中输入vf
就可以直接命令行搜索文件并用nvim打开文件了。
参考
https://github.com/junegunn/fzf
https://www.jianshu.com/p/d64553a37d69