菜单

集成特性

相关源文件

本页面提供了 fzf 与 shell、编辑器及其他工具集成功能的概述。fzf 通过其模糊查找能力,与各种环境进行全面集成,以提高命令行生产力。

有关各项集成的具体详情,请参阅 Shell 集成Vim 集成tmux 集成

集成架构概述

fzf 支持与多个环境集成,从而可在不同工具之间实现无缝的模糊查找功能。这些集成功能扩展了 fzf 的核心能力。

图示:fzf 集成架构

来源:plugin/fzf.vim24-27 plugin/fzf.vim500-578 bin/fzf-tmux1-3

Shell 集成

fzf 为 bash、zsh 和 fish shell 提供了按键绑定和模糊补全。这些集成是通过 shell 脚本实现的,这些脚本可以加载到您的 shell 配置中。

键绑定

fzf 在支持的 shell 中提供了三个按键绑定

按键绑定功能描述
CTRL-T文件选择将选定的文件/文件夹粘贴到命令行
CTRL-R历史搜索搜索命令历史
ALT-C目录导航切换到选定的目录

每个按键绑定都可以通过环境变量进行自定义

  • FZF_CTRL_T_COMMAND / FZF_CTRL_T_OPTS
  • FZF_CTRL_R_OPTS
  • FZF_ALT_C_COMMAND / FZF_ALT_C_OPTS

图示:Shell 按键绑定实现

来源:shell/key-bindings.bash7-13 shell/key-bindings.zsh7-13 shell/key-bindings.fish7-13

Shell 补全

fzf 为 bash 和 zsh shell 提供了模糊补全。此功能允许您对以下内容使用模糊查找:

  • 文件和目录(**<TAB>
  • 进程 ID(kill -9 **<TAB>
  • 主机名(ssh **<TAB>
  • 环境变量和别名(export **<TAB>unalias **<TAB>

可以通过环境变量自定义补全行为

  • FZF_COMPLETION_TRIGGER(默认:**
  • FZF_COMPLETION_OPTS
  • FZF_COMPLETION_PATH_OPTS
  • FZF_COMPLETION_DIR_OPTS

可以使用 _fzf_complete 助手来创建自定义补全函数。

来源:README.md534-700

Vim 集成

fzf 通过其插件接口提供了与 Vim 的全面集成。此集成包含两个核心函数和一个基本命令

图示:Vim 集成组件

来源:plugin/fzf.vim147-167 plugin/fzf.vim395-453 plugin/fzf.vim500-578

核心功能

  1. fzf#run([spec dict])

    • 在 Vim 中启动 fzf,并使用指定的 spec
    • 处理打开文件、运行命令等操作
    • 支持各种布局选项,包括终端窗口、tmux 窗格和弹出窗口
    • 管理临时文件和环境设置
  2. fzf#wrap([name string], [spec dict], [fullscreen bool]) -> (dict)

    • 接收 fzf#run 的 spec,并返回一个扩展版本,其中包含全局偏好设置
    • 支持 g:fzf_actiong:fzf_layoutg:fzf_colorsg:fzf_history_dir
    • 轻松创建一致的 fzf 命令
    • 处理布局配置和操作绑定
  3. :FZF [fzf_options string] [path string]

    • 基本模糊文件选择器命令
    • 支持以不同方式打开文件(当前窗口、标签页、分割窗口)
    • 可用作创建自定义命令的参考
    • 内部使用 fzf#wrap 来应用全局偏好设置

来源:plugin/fzf.vim395-453 plugin/fzf.vim500-578 plugin/fzf.vim1089-1107

配置选项

Vim 集成支持各种配置选项

来源:README-VIM.md104-175 README-VIM.md325-359

tmux 集成

fzf 通过 fzf-tmux 脚本提供了与 tmux 的集成,该脚本允许在 tmux 窗格或弹出窗口中运行 fzf。

图示:fzf-tmux 集成流程

来源:bin/fzf-tmux1-254 bin/fzf-tmux10-24 bin/fzf-tmux141-254

分割窗格选项

fzf-tmux 脚本支持使用各种选项创建分割窗格

选项描述
-u [HEIGHT[%]]向上分割(上)
-d [HEIGHT[%]]向下分割(下)
-l [WIDTH[%]]向左分割
-r [WIDTH[%]]向右分割

示例:fzf-tmux -d 30%

该实现支持不同的尺寸格式(百分比或绝对值),并管理窗格交换以实现正确的定位

来源: bin/fzf-tmux29-42 bin/fzf-tmux61-126 bin/fzf-tmux249-252

对于 tmux 3.2 或更高版本,fzf-tmux 支持创建弹出窗口

选项描述
-p [宽度[%][,高度[%]]]创建带有可选宽度和高度的弹出窗口
-w 宽度[%]设置弹出窗口宽度
-h 高度[%]设置弹出窗口高度
-x 列设置弹出窗口 X 坐标
-y 行设置弹出窗口 Y 坐标

示例: fzf-tmux -p 80%,60%

脚本会检测 tmux 版本兼容性并相应地调整选项

来源: bin/fzf-tmux22-24 bin/fzf-tmux32-36 bin/fzf-tmux200-238

环境变量

fzf 的许多集成方面都可以通过环境变量进行自定义

可变目的
FZF_DEFAULT_COMMAND输入为 tty 时的默认命令
FZF_DEFAULT_OPTS默认选项
FZF_DEFAULT_OPTS_FILE包含默认选项的文件路径
FZF_TMUX启用 tmux 集成 (设置为 1)
FZF_TMUX_OPTStmux 集成的选项
FZF_TMUX_HEIGHTtmux 分屏的高度 (默认: 40%)
FZF_CTRL_T_COMMANDCTRL-T 快捷键绑定的命令
FZF_CTRL_T_OPTSCTRL-T 快捷键绑定的选项
FZF_CTRL_R_OPTSALT-C 快捷键绑定的选项
FZF_ALT_C_COMMANDALT-C 快捷键绑定的命令
FZF_ALT_C_OPTSALT-C 快捷键绑定的选项
FZF_COMPLETION_TRIGGERshell 自动补全的触发序列 (默认: **)
FZF_COMPLETION_OPTS自动补全的选项

图示:环境变量处理流程

来源: shell/key-bindings.fish7-13 shell/key-bindings.zsh7-13 shell/key-bindings.bash7-13 shell/key-bindings.fish32-40 shell/key-bindings.zsh41-47 shell/key-bindings.bash20-26

集成设置

fzf 为 shell 集成提供了简便的设置命令

对于 Vim 集成,您可以使用 vim-plug

Vim 插件中的 fzf#install() 函数负责下载和安装 fzf 二进制文件

来源: plugin/fzf.vim147-167

自定义集成示例

fzf 可集成到自定义脚本和工作流程中。以下是一些模式

  1. 带 fzf 的 shell 函数

  2. 自定义 Vim 命令

  3. 将 fzf 与 tmux 一起使用

来源: README-VIM.md380-391 README.md474-480