菜单

基本用法

相关源文件

本文档介绍了 fzf(一个通用命令行模糊查找器)的基本用法模式。它解释了如何以基本形式使用 fzf,包括输入方法、搜索语法、按键绑定和常见工作流程。有关更高级的功能和自定义选项,请参阅命令行选项高级功能

核心概念

fzf 是一个交互式过滤器,它从标准输入读取项目列表,允许您通过模糊搜索选择一个或多个项目,然后将选定的项目输出到标准输出。这种简单的模式使得 fzf 可以在命令行中以无数种方式使用。

来源: README.md260-298

启动 fzf

启动 fzf 主要有两种方式:

  1. 通过管道接收输入:fzf 从标准输入读取项目。

  2. 无输入时: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 选项在 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 集成

当设置了 Shell 集成后,fzf 提供了常用的 Shell 操作的按键绑定。

键绑定

  • CTRL-T - 将选定的文件/目录粘贴到命令行
  • CTRL-R - 搜索命令历史
  • ALT-C - 更改目录

模糊补全

fzf 还为 bash 和 zsh 提供了模糊补全功能。

  • 文件和目录:vim **<TAB>
  • 进程 ID: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_COMMANDCTRL-T 的命令(默认为文件/目录列表)。
    • FZF_CTRL_T_OPTSCTRL-T 的选项。
    • FZF_CTRL_R_OPTSCTRL-R 的选项。
    • FZF_ALT_C_COMMANDALT-C 的命令(默认为目录列表)。
    • FZF_ALT_C_OPTSALT-C 的选项。

来源: README.md402-425 README.md492-540

基本自定义

布局和外观

样式预设

fzf 提供了样式预设,便于快速设置。

可用预设:defaultfullminimal

来源: README.md426-442

常见示例

文件选择

目录导航

进程管理

Git 操作

来源: README.md484-490

退出状态

fzf 根据退出方式返回不同的退出码。

  • 0:正常退出(已选择项目)。
  • 1:无匹配项。
  • 2:错误。
  • 130:被 CTRL-CESC 中断。

这使得脚本能够适当地处理不同的退出场景。

来源: man/man1/fzf.11248-1259

总结

fzf 的基本用法围绕其简单而强大的模式展开:

  1. 提供项目列表(通过管道或文件系统遍历)
  2. 通过模糊搜索交互式地过滤列表
  3. 选择一个或多个项目
  4. 将选定的项目作为另一个命令的输入

这种模式,结合 shell 集成和自定义选项,使 fzf 成为命令行工作流程中极其通用的工具。