fzf
fzf 是一个通用的命令行模糊查找器。
安装
配置
Shell
多种 Shell 均提供可选的 fzf 按键绑定和补全
Ctrl+t列出当前目录下的文件和文件夹(例如,输入git add,按下Ctrl+t,使用Tab选择几个文件,最后按Enter)Ctrl+r搜索 Shell 命令历史Alt+c模糊切换目录
Bash
在 .bashrc 中 加载 (Source) 所需的文件
/usr/share/fzf/key-bindings.bash/usr/share/fzf/completion.bash
从 0.48 版本开始,可以通过单行命令实现
eval "$(fzf --bash)"
原有的语法仍然受支持,且对于用户自定义版本的脚本非常有用。
Zsh
在 .zshrc 中加载所需文件(如果使用了 vi-mode,请将其放在 vi-mode 之后)
/usr/share/fzf/key-bindings.zsh/usr/share/fzf/completion.zsh
从 0.48 版本开始,可以通过单行命令实现
source <(fzf --zsh)
fish
对于 fish,按键绑定位于
/usr/share/fish/vendor_functions.d/fzf_key_bindings.fish
fish 默认会加载此文件,但绑定需要手动启用
~/.config/fish/functions/fish_user_key_bindings.fish
function fish_user_key_bindings fzf_key_bindings end
fish 中的 fzf 补全可以通过自定义函数启用:https://github.com/junegunn/fzf/wiki/Examples-(fish)
Vim
基础的 Vim 插件已包含在软件包中,并安装到 Vim 的全局插件目录。因此,您无需在 .vimrc 中添加任何内容即可使用。不过,它仅提供了 FZF 命令。fzf 的作者还制作了一个额外的 Vim 插件,定义了一些便捷函数,请参阅 https://github.com/junegunn/fzf.vim。
Arch 特有的 fzf 用法
Pacman
尝试使用此命令模糊搜索所有可用软件包,并在预览窗口中显示软件包信息,然后安装选中的软件包
$ pacman -Slq | fzf --multi --preview 'pacman -Si {1}' | xargs -ro sudo pacman -S
列出所有已安装的软件包,然后删除选中的软件包
$ pacman -Qq | fzf --multi --preview 'pacman -Qi {1}' | xargs -ro sudo pacman -Rns
如果您想在预览中添加软件包文件列表——预览窗口的更新可能会稍微慢一些(请确保在调用前至少以 root 权限运行一次 pacman -Fy 以同步 pacman 文件数据库)
$ pacman -Slq | fzf --multi --preview 'cat <(pacman -Si {1}) <(pacman -Fl {1} | awk "{print \$2}")' | xargs -ro sudo pacman -S