fzf

出自 ArchWiki

fzf 是一个通用的命令行模糊查找器。

安装

安装 fzf 软件包。开发版本是 fzf-gitAUR

配置

此文章或章节需要扩充。

原因: 至少应该提及 shell 补全并非唯一需要配置的用例。(在 Talk:Fzf 中讨论)

Shell

可选的 fzf 快捷键绑定 和补全功能适用于各种 shell

  • Ctrl+t 列出当前目录中的文件+文件夹(例如,输入 git add ,按下 Ctrl+t,使用 Tab 选择几个文件,最后按下 Enter
  • Ctrl+r 搜索 shell 命令历史记录
  • Alt+c 模糊切换目录

Bash

Source.bashrc 中的所需文件

  • /usr/share/fzf/key-bindings.bash
  • /usr/share/fzf/completion.bash

从 0.48 版本开始,可以使用单行命令完成此操作

  • eval "$(fzf --bash)"

原始语法仍然受支持,并且对于用户自定义版本的脚本很有用。

Zsh

Source 您 .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 将默认 source 此文件,但必须手动启用绑定

~/.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

paruzAUR 软件包还为 paruAURpacman 提供了 fzf 终端 UI。

替代方案

  • skim – 使用 Rust 编写的模糊查找器
  • fzy – 模糊查找器/选择器