当我们要找寻一个档案时,很多时候都只会记得档案的部分资讯,可能是部分的路径或是名称,我们可以使用这些资讯对电脑下达 find
或 fd
之类的查找指令,但是人的记忆总有疏漏,可能这些资讯是错误或是过於笼统的,我们必须要再次地增删查找字串来取得想要的结果,这样一来一往,我们会使用很多的查找指令,在这样的来回输入时,时间就会被浪费了。
因此,查找资料最好的方式就是像是 Finder 或 File Explorer 那样可以轻松地进出上下层目录,并且提供搜寻功能的应用程序。
而想要不离开终端机,我们就需要一个可以交互(因要变更目录或搜寻对象)的查找指令。
fzf
是个命令列的模糊搜寻器,它会以输入字串为搜寻目标,列出可能的结果清单,使用者可以在这个清单上选择出符合的结果,如果没有期望的结果,也可以即时地删除或增加资讯,藉以找到目标。
使用 Homebrew 安装 fzf
:
brew install fzf
安装完成後,还要另外执行 fzf
的 install
脚本:
$(brew --preview)/opt/fzf/install
脚本的路径取决於 Homebrew 的安装路径,因此需要使用
brew --preview
取得安装目录。
此脚本会进行键的绑定与模糊补全的设置。
执行完成後,请重新启动终端机,让安装生效。
执行 fzf
命令就可以叫出当前目录的列表,使用者可以输入字串来限缩列表的结果。
fzf
预设输入的字串是采取模糊搜寻,因此只要有匹配的目录或档案就会输出在结果上。
除了模糊搜寻, fzf
提供了各种前缀( prefix )让我们使用不同的搜寻方式:
输入字串 | 动作 | 说明 |
---|---|---|
sbtrkt |
模糊匹配 | 与 sbtrkt 中的任意字元匹配的物件 |
'wild |
精确匹配 | 与 wild 字串匹配的物件 |
^music |
前缀精确匹配 | 物件的开头需是 music 字串 |
.mp3$ |
後缀精确匹配 | 物件的结尾需是 .mp3 字串 |
!fire |
反向精确匹配 | 物件中不能有 fire 字串 |
!^music |
反向前缀匹配 | 物件的开头不能是 music 字串 |
!.mp3$ |
反向後缀匹配 | 物件的结尾不能是 .mp3 字串 |
输入多个字串时, fzf
会以 AND (且)的搜寻方式处理各个字串,如果要使用 OR (或)搜寻的话,可以使用 |
隔开多个字串。
days tmux .md$ | .drawio$
当在列表上看到期望的目标时,我们可以使用下面的方式操作 fzf
以选取结果:
CTRL-K
/ CTRL-J
(或 CTRL-P
/ CTRL-N
)上下移动。Enter
选取物件。CTRL-C
/ CTRL-G
/ ESC
离开 fzf
。加上 -m
参数,可以开启多选模式:
fzf -m
在多选模式下可以使用 TAB
与 Shift-TAB
上下多选物件。
如要取消选择,可以在以选取的物件上再输入一次 TAB
或 Shift-TAB
。
fzf
预设三个快捷键供使用者使用:
CTRL-T
:所选的物件会贴至命令列。CTRL-R
:开启历史指令列表,所选的指令会贴至命令列。ALT-C
:会移动至所选的目录。有时,我们会在下指令时忘记目标的完整名称,这时我们可以使用 fzf
的模糊补全功能来找到想要的物件。
fzf
的档案与目录的模糊补全是使用 **
作为关键字,并按下 TAB
後触发,它的定义为 COMMAND [DIRECTORY/][FUZZY_PATTERN]**<TAB>
。
# 当前目录下搜寻
cd **<TAB>
# 当前目录下搜寻 `fzf`
cd fzf**<TAB>
# `days` 目录下搜寻 `fzf`
cd days/fzf**<TAB>
当想要关闭特定的程序时,我们会使用 kill
指令, fzf
会智能地判断指令,并输出程序列表。
kill -9 <TAB>
此状态下 fzf
为多选模式,可以使用 TAB
与 Shift-TAB
选取多个程序。
在输入 ssh
与 telnet
指令时, fzf
会从 /etc/hosts
与 ~/.ssh/config
中取得 Host 名称列表。
ssh **<TAB>
telnet **<TAB>
在输入环境变数与别名相关的指令时, fzf
会取得其列表。
unset **<TAB>
export **<TAB>
unalias **<TAB>
Zim 官方提供了 fzf
的 Module ,它将 fzf
的搜寻指令以 fd
或 ripgrep
取代预设的 find
,并且在按下 CTRL-T
时,使用 BAT
进行预览的动作。
fzf
是个命令列的模糊搜寻器,在查找物件时使用。fzf
或是键入 CTRL-T
开启档案与目录查找。CTRL-R
查找历史指令。ALT-C
移动至查找的物件。fzf
提供各种前缀字来修改原本预设的模糊搜寻方式。
'
:完整搜寻。^
:开头相符。$
:结尾相符。!
:反向搜寻。CTRL-K
/ CTRL-J
(或 CTRL-P
/ CTRL-N
)移动。Enter
选取。CTRL-C
/ CTRL-G
/ ESC
离开。TAB
来启动模糊补全。
**<TAB>
开启档案与目录列表。kill
指令: TAB
输入开启程序列表。ssh
与 telnet
指令: **<TAB>
输入开启 Host 名称列表。**<TAB>
输入开启变数或别名列表。fzf
Module 整合,可以让 fzf
使用 fd
(或 ripgrep
)及 BAT 优化功能。
<<: [第13天]理财达人Mx. Ada-期货(futures)下单
现在有一些还不错的网站有在蒐集各校段考考古题 例如:全国中小学题库网、昌爸工作坊 等等 由於我国着作...
上一篇提到,要深入了解需求,需要大量的沟通,对应到 DDD 中非常重要的一环——与领域专家一同开会。...
太空狗闪躲陨石 教学原文参考:太空狗闪躲陨石 这篇文章会介绍,如何在 Scratch 3 里使用键盘...
昨天利用了 window.open 可以开启新分页或视窗,今天则是来关闭多个视窗。 Nightwat...
台湾股市有揭露三大法人当日买进卖出的金额,在市场上会有流派依照这些进出的资讯,调整手上的资金部位。因...