跳转至内容

fzf

来自 ArchWiki

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

安装

安装 fzf 软件包。

配置

本文章或章节需要扩充。

原因: 至少应该提到 Shell 补全并不是唯一需要配置的使用场景。(在 Talk: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

替代方案

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

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.