fzf(交互式命令行模糊查找器)的快速介绍

我在 Linux Uprising 的文章中多次提到 fzf,但我从未真正写过它。 fzf 长期以来一直是我工作流程的一部分,它是一个您应该了解的了不起的工具。

我意识到你们中的许多人已经在使用 fzf,但对于那些没有使用的人,这篇文章是为你准备的。 这只是对 fzf 的简单介绍,没有过多赘述。 fzf 项目页面和 wiki 提供了有关 fzf、其用法以及许多示例的大量信息,因此请查看这些以获取更多信息。

fzf 是一个用 Go 编写的快速交互式命令行模糊查找器。 该工具适用于 Linux、macOS、*BSD 和 Windows。

它可以通过解析命令的输出,使用 Shell 扩展(包括 Bash 和 Zsh 的模糊自动完成,以及诸如 CTRL-T, CTRL-RALT-C 用于 Bash、Zsh 和 Fish),以及作为 Vim / Neovim 插件。 还有一个 Tmux 脚本用于在 Tmux 窗格中启动 fzf。

以下是这些 fzf 命令行键绑定的作用:

  • CTRL-R: 搜索您的命令历史记录。 按 Enter 将历史记录中的选定命令粘贴到命令行上。 按 切换与时间顺序的排序相关性 CTRL-R 再次(默认情况下,排序是按相关性完成的)
  • CTRL-T: 显示当前目录(和子目录)中的文件和文件夹列表。 按 Enter 将选定的文件/文件夹路径粘贴到命令行
  • ALT-C: 显示当前目录中的子目录列表。 按 Entercd 进入所选目录

默认情况下,搜索语法允许输入多个以空格分隔的搜索词(fzf 在扩展搜索模式下启动)。 如果要查找完全匹配项,请在搜索词前加上单引号(例如 'search-term)。 更多关于 fzf 搜索语法的信息在这里。

默认情况下,交互式 fzf 查找器使用以下键绑定: / (或者 CTRL-J / CTRL-K 或者 CTRL-N / CTRL-P) 上下移动光标, Enter 键选择一个项目,和 CTRL-C (或者 CTRL-G / ESC) 退出。 它还支持在使用时选择多个项目 -m 命令行参数,在这种情况下,您可以使用 TABShift-TAB.

fzf 还自带鼠标支持,所以你可以点击、滚动、双击项目等。对于多选模式,你可以使用 Shift-clickShift-scroll.

其他 fzf 功能包括显示预览窗格(--preview=COMMAND),设置其高度(例如 --height 50%), 添加边框 (--border)、使用自定义键绑定、使用不同的布局(如反向布局)、启用 ANSI 颜色代码的处理等等。