fzf模糊选择工具
前言
fzf,一个能对输入的内容显示交互式菜单,
使用模糊匹配进行选择的工具.
可以实现许多种功能.
就像是命令行版本的emacs插件console.
针对的应用场景
对于
- 备选项的值可以使用命令获取
- 输入需要从备选项中选择
- 不知道有哪些选项(比如安装软件,PID)
- 记不清选项的完整名字(比如git分支)
- 不想输入完整名字(比如cd)
这样模式的操作都可以辅助提升速度,
可以说是命令行里的万金油了.
只不过由于是一口气不加过滤全部拿来可选项.
CPU运算量可能会稍稍加大.
macbook甚至可能会烫.
fzf的主要功能
- 匹配
- 交互式外观
模糊匹配能力
- 多关键词
- 智能大小写
- 模糊匹配(一个词分拆成多个部分来支配)
- 手动精确匹配
外观的定制
- 高度,宽度,位置
- 显示条目数
- 预览动作
可实现的功能
选择文件
fd
+ fzf
fd搜索当前目录下的全部文件,
传给fzf,
模糊选出最想使用的结果
切换目录
但有 z
可以用了,就不再用了
模糊匹配的历史
history
+ fzf
不需要再对历史进行严格的匹配,
忘记一部分也可以匹配了.
搭配kill
ps aux
+ fzf
进一步增强了kill的使用能力
切换branch
git branch -a
+ fzf
列出能切换的分支名,
选择好.
使用类似 git checkout $(git branch -a | fzf)
的形式即切换
直接检索文件内容
rg
+ fzf
对于个人笔记存放的目录,
大小有限的情况下,
可以使用fzf来增强
浏览器
使用一定的接口,
检索浏览器的历史和书签.
一定程度上类似alfread的workflow的某些功能.
但alfread的不知道是否支持模糊匹配.
各种安装
apt安装,homebrew安装等.
由于个人习惯安装软件先看其自身介绍,
而不是接受安利,直接安装.
因此暂时不用.
作为i3的启动器
获取 dmenu
的内容然后选择.
不过个人喜欢有UI但不能模糊匹配的rofi.
软件太多记不清名字的不多.
安装
pacman可安装.
自动补全的支持情况
对于一些热门的命令,输入命令后按下 Tab
就能直接调用fzf了.
对于稍微不热门的命令,需要输入 **
占位符,然后使用 Tab
调用fzf.
对于官方尚未支持的命令,需要自定义函数并使用原始的管道等命令组合.