本文档介绍了 fzf(一个通用命令行模糊查找器)的基本用法模式。它解释了如何以基本形式使用 fzf,包括输入方法、搜索语法、按键绑定和常见工作流程。有关更高级的功能和自定义选项,请参阅命令行选项和高级功能。
fzf 是一个交互式过滤器,它从标准输入读取项目列表,允许您通过模糊搜索选择一个或多个项目,然后将选定的项目输出到标准输出。这种简单的模式使得 fzf 可以在命令行中以无数种方式使用。
来源: README.md260-298
启动 fzf 主要有两种方式:
通过管道接收输入:fzf 从标准输入读取项目。
无输入时:fzf 会遍历当前目录下的文件系统。
当无输入启动时,fzf 将使用其内置的文件系统遍历器来列出文件。此行为可以通过 $FZF_DEFAULT_COMMAND 环境变量或 --walker 选项进行自定义。
来源: README.md260-281
一旦 fzf 运行起来,您将看到一个交互式界面,其中有一个提示符,您可以在其中键入搜索查询。
CTRL-K / CTRL-J(或 CTRL-P / CTRL-N)上下移动光标Enter 键选择项目CTRL-C / CTRL-G / ESC 退出而不选择当使用 -m 或 --multi 选项启动时,fzf 允许选择多个项目。
TAB 标记/取消标记项目Shift-TAB 取消标记项目或移动到上一个项目› 符号标记(或根据您的终端有所不同)来源: README.md299-307 man/man1/fzf.1567-569
fzf 提供不同的显示模式以适应各种用例。
默认情况下,fzf 在全屏模式下运行,占据整个终端窗口。
使用 --height HEIGHT[%],fzf 将在光标下方启动,并具有指定的高度。
带有 ~ 前缀可以根据输入大小进行自适应高度。
当在 tmux 中运行时,您可以使用 --tmux 选项在 tmux 弹出窗口中显示 fzf。
来源: README.md308-371
来源: README.md308-371 man/man1/fzf.1367-417
fzf 默认以“扩展搜索模式”启动,该模式提供了强大的搜索功能。
| 标记 | 匹配类型 | 描述 |
|---|---|---|
sbtrkt | 模糊匹配 | 匹配 sbtrkt 的项目 |
'wild | 精确匹配(引用) | 包含 wild 的项目 |
'wild' | exact-boundary-match | 在单词边界处包含 wild 的项目 |
^music | 前缀精确匹配 | 以 music 开头的项目 |
.mp3$ | 后缀精确匹配 | 以 .mp3 结尾的项目 |
!fire | 反向精确匹配 | 不包含 fire 的项目 |
!^music | 反向前缀精确匹配 | 不以 music 开头的项目 |
!.mp3$ | 反向后缀精确匹配 | 不以 .mp3 结尾的项目 |
您可以使用空格分隔的多个模式:^core go$ | rb$ | py$
使用 | 字符作为 OR 操作符,允许您匹配多个备选模式。
来源: README.md373-400 man/man1/fzf.11337-1386
fzf 最常见的用途之一是在编辑器中打开文件。
使用 xargs 的更健壮方法
或使用 become 操作
fzf 可以过滤任何命令的输出。
Shell 集成提供了 CTRL-R 用于搜索命令历史记录。
Shell 集成提供了 ALT-C 用于快速更改目录。
来源: README.md260-298 README.md492-540
当设置了 Shell 集成后,fzf 提供了常用的 Shell 操作的按键绑定。
CTRL-T - 将选定的文件/目录粘贴到命令行CTRL-R - 搜索命令历史ALT-C - 更改目录fzf 还为 bash 和 zsh 提供了模糊补全功能。
vim **<TAB>kill -9 **<TAB>ssh **<TAB>unset **<TAB>来源: README.md492-540 README.md544-710
fzf 的行为可以通过环境变量进行自定义。
FZF_DEFAULT_COMMAND:在输入为 tty 时使用的默认命令。
FZF_DEFAULT_OPTS:默认选项。
用于 Shell 集成:
FZF_CTRL_T_COMMAND:CTRL-T 的命令(默认为文件/目录列表)。FZF_CTRL_T_OPTS:CTRL-T 的选项。FZF_CTRL_R_OPTS:CTRL-R 的选项。FZF_ALT_C_COMMAND:ALT-C 的命令(默认为目录列表)。FZF_ALT_C_OPTS:ALT-C 的选项。来源: README.md402-425 README.md492-540
fzf 提供了样式预设,便于快速设置。
可用预设:default、full 和 minimal。
来源: README.md426-442
来源: README.md484-490
fzf 根据退出方式返回不同的退出码。
0:正常退出(已选择项目)。1:无匹配项。2:错误。130:被 CTRL-C 或 ESC 中断。这使得脚本能够适当地处理不同的退出场景。
fzf 的基本用法围绕其简单而强大的模式展开:
这种模式,结合 shell 集成和自定义选项,使 fzf 成为命令行工作流程中极其通用的工具。