本页面提供了 fzf 与 shell、编辑器及其他工具集成功能的概述。fzf 通过其模糊查找能力,与各种环境进行全面集成,以提高命令行生产力。
有关各项集成的具体详情,请参阅 Shell 集成、Vim 集成 和 tmux 集成。
fzf 支持与多个环境集成,从而可在不同工具之间实现无缝的模糊查找功能。这些集成功能扩展了 fzf 的核心能力。
图示:fzf 集成架构
来源:plugin/fzf.vim24-27 plugin/fzf.vim500-578 bin/fzf-tmux1-3
fzf 为 bash、zsh 和 fish shell 提供了按键绑定和模糊补全。这些集成是通过 shell 脚本实现的,这些脚本可以加载到您的 shell 配置中。
fzf 在支持的 shell 中提供了三个按键绑定
| 按键绑定 | 功能 | 描述 |
|---|---|---|
CTRL-T | 文件选择 | 将选定的文件/文件夹粘贴到命令行 |
CTRL-R | 历史搜索 | 搜索命令历史 |
ALT-C | 目录导航 | 切换到选定的目录 |
每个按键绑定都可以通过环境变量进行自定义
FZF_CTRL_T_COMMAND / FZF_CTRL_T_OPTSFZF_CTRL_R_OPTSFZF_ALT_C_COMMAND / FZF_ALT_C_OPTS图示:Shell 按键绑定实现
来源:shell/key-bindings.bash7-13 shell/key-bindings.zsh7-13 shell/key-bindings.fish7-13
fzf 为 bash 和 zsh shell 提供了模糊补全。此功能允许您对以下内容使用模糊查找:
**<TAB>)kill -9 **<TAB>)ssh **<TAB>)export **<TAB>,unalias **<TAB>)可以通过环境变量自定义补全行为
FZF_COMPLETION_TRIGGER(默认:**)FZF_COMPLETION_OPTSFZF_COMPLETION_PATH_OPTSFZF_COMPLETION_DIR_OPTS可以使用 _fzf_complete 助手来创建自定义补全函数。
fzf 通过其插件接口提供了与 Vim 的全面集成。此集成包含两个核心函数和一个基本命令
图示:Vim 集成组件
来源:plugin/fzf.vim147-167 plugin/fzf.vim395-453 plugin/fzf.vim500-578
fzf#run([spec dict])
fzf#wrap([name string], [spec dict], [fullscreen bool]) -> (dict)
fzf#run 的 spec,并返回一个扩展版本,其中包含全局偏好设置g:fzf_action、g:fzf_layout、g:fzf_colors 和 g:fzf_history_dir: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
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_OPTS | tmux 集成的选项 |
FZF_TMUX_HEIGHT | tmux 分屏的高度 (默认: 40%) |
FZF_CTRL_T_COMMAND | CTRL-T 快捷键绑定的命令 |
FZF_CTRL_T_OPTS | CTRL-T 快捷键绑定的选项 |
FZF_CTRL_R_OPTS | ALT-C 快捷键绑定的选项 |
FZF_ALT_C_COMMAND | ALT-C 快捷键绑定的命令 |
FZF_ALT_C_OPTS | ALT-C 快捷键绑定的选项 |
FZF_COMPLETION_TRIGGER | shell 自动补全的触发序列 (默认: **) |
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 二进制文件
fzf 可集成到自定义脚本和工作流程中。以下是一些模式
带 fzf 的 shell 函数
自定义 Vim 命令
将 fzf 与 tmux 一起使用