我在 Linux Uprising 的文章中多次提到 fzf,但我从未真正写过它。 fzf 长期以来一直是我工作流程的一部分,它是一个您应该了解的了不起的工具。
我意识到你们中的许多人已经在使用 fzf,但对于那些没有使用的人,这篇文章是为你准备的。 这只是对 fzf 的简单介绍,没有过多赘述。 fzf 项目页面和 wiki 提供了有关 fzf、其用法以及许多示例的大量信息,因此请查看这些以获取更多信息。
fzf 是一个用 Go 编写的快速交互式命令行模糊查找器。 该工具适用于 Linux、macOS、*BSD 和 Windows。
它可以通过解析命令的输出,使用 Shell 扩展(包括 Bash 和 Zsh 的模糊自动完成,以及诸如 CTRL-T
, CTRL-R
和 ALT-C
用于 Bash、Zsh 和 Fish),以及作为 Vim / Neovim 插件。 还有一个 Tmux 脚本用于在 Tmux 窗格中启动 fzf。
以下是这些 fzf 命令行键绑定的作用:
CTRL-R
: 搜索您的命令历史记录。 按Enter
将历史记录中的选定命令粘贴到命令行上。 按 切换与时间顺序的排序相关性CTRL-R
再次(默认情况下,排序是按相关性完成的)CTRL-T
: 显示当前目录(和子目录)中的文件和文件夹列表。 按Enter
将选定的文件/文件夹路径粘贴到命令行ALT-C
: 显示当前目录中的子目录列表。 按Enter
到cd
进入所选目录
默认情况下,搜索语法允许输入多个以空格分隔的搜索词(fzf 在扩展搜索模式下启动)。 如果要查找完全匹配项,请在搜索词前加上单引号(例如 'search-term
)。 更多关于 fzf 搜索语法的信息在这里。
默认情况下,交互式 fzf 查找器使用以下键绑定: ↑
/ ↓
(或者 CTRL-J
/ CTRL-K
或者 CTRL-N
/ CTRL-P
) 上下移动光标, Enter
键选择一个项目,和 CTRL-C
(或者 CTRL-G
/ ESC
) 退出。 它还支持在使用时选择多个项目 -m
命令行参数,在这种情况下,您可以使用 TAB
和 Shift-TAB
.
fzf 还自带鼠标支持,所以你可以点击、滚动、双击项目等。对于多选模式,你可以使用 Shift-click
和 Shift-scroll
.
其他 fzf 功能包括显示预览窗格(--preview=COMMAND
),设置其高度(例如 --height 50%
), 添加边框 (--border
)、使用自定义键绑定、使用不同的布局(如反向布局)、启用 ANSI 颜色代码的处理等等。