
说实话,我有段时间特别抗拒打开终端。
不是因为我不喜欢写代码,也不是因为害怕黑底白字。
纯粹是因为,太麻烦了。
特别是当我想找一个,“我明明上周才运行过,但又想不起来具体参数”的命令时。
我通常的做法是,疯狂按“向上”箭头,按得手指头都酸了,眼珠子盯着屏幕一行行闪过,生怕错过了。
或者用那个笨笨的 history | grep,在一堆乱七八糟的输出里扒拉。

那种感觉,真的很无力。
我就想找个文件,或者找个命令,怎么就这么难?
直到后来,我无意中在GitHub上翻到了这个东西。
用完之后,我坐在椅子上发了一会儿呆。
心里只有一句话:
我为什么,没有早点遇到它。
这个神器的名字,叫 fzf。

它在 GitHub 上,已经拿到了整整 7.6万 颗 Star。
这是什么概念?
在开源的世界里,这基本上就是“神殿”级别的存在了。

它的全称是 command-line fuzzy finder。
翻译过来,就是:命令行模糊查找器。
听着挺极客,挺硬核。
但实际上,它解决的问题,极其朴素,也极其痛点。
就是帮你,最快地找到你想要的东西。
不管那个东西是文件、是历史命令、是进程ID,还是Git的提交记录。
只要你给它一点点线索,哪怕是几个记不全的字母。
它都能瞬间,把你想要的东西,送到你面前。

安装过程我不细说了,Mac 上就是一行 brew install fzf 的事。
装完之后,它最让我上瘾的,其实只有两个快捷键。
但就是这两个快捷键,彻底改变了我使用电脑的逻辑。
第一个,是 Ctrl + R。
用过终端的朋友都知道,这是搜索历史命令的快捷键。
但是系统自带的那个搜索,真的,很难评。
它只能显示一条,你得不停地按,而且稍微记错一个字母,就什么都搜不到。
但装了 fzf 之后。
当你按下 Ctrl + R。
一个新的世界打开了。

你所有的历史命令,会以一个清晰的列表展现在你面前。
你不需要记得命令是 docker run -it... 还是 docker exec -it...。
你只需要记得,里面有个 redis。
你敲下 redis 几个字。
所有相关的命令,瞬间被筛选出来,按时间或者相关性排好队。
你用上下键选中,回车。
搞定。
那种感觉,就像是你还在脑子里模糊地想着“我要那个啥”,手还没抬起来,fzf 已经把东西递到你手上了。

第二个,是 Ctrl + T。
这个是用来找文件的。
以前我要进一个藏得很深的目录,可能要 cd 还要配合 ls 好几次。
或者用 find 命令写一长串通配符。
现在,按下 Ctrl + T。
当前目录下(包括子目录)所有的文件,全部铺开。
你输入 cfg,它自动匹配 config、configs、conf.yml。
不仅支持模糊匹配,甚至你打错一两个字母,或者少打几个字母,它也能猜到你想找什么。
它不要求你精准。
它允许你犯懒,允许你模糊。
这就是“人味”。

而且,这玩意是用 Go 语言写的。
即使是在有着几十万个文件的项目里,它的搜索速度,也是毫秒级的。
快到没有任何迟滞感。
这种快,不是那种“我不卡”的快。
而是“心流不被打断”的快。
除了这两个最基础的用法,fzf 最强的地方在于,它遵循了 Unix 的哲学:
做好一件事,然后可以通过管道(Pipe)连接一切。
你可以把它接在任何命令后面。
比如,你想杀掉一个进程。
以前你得 ps -ef | grep xxx,找到 PID,然后 kill -9 PID。
现在,你可以写一个简单的脚本,让 ps 的结果通过 fzf 筛选,选好后直接传给 kill。
整个过程,不用沾染鼠标,手指在键盘上跳动几下,任务结束。
甚至,配合 Vim/Neovim 之后,它更是强到离谱。
在代码编辑器里,想找个文件,想找个函数定义,呼出 fzf,秒切。

说实话,用了 fzf 这么久。
我最大的感触,并不是它技术有多牛逼(虽然确实很牛逼)。
而是它带给我的一种,掌控感。
我们每天在电脑前,其实有大量的时间,都浪费在了“找东西”这件琐事上。
找文件、找命令、找代码、找笔记。
这些琐事,像是一个个微小的减速带,不断地打断我们的思路,消磨我们的耐心。

甚至让我们在面对复杂任务时,产生一种本能的抗拒。
而 fzf 做的事情,就是把这些减速带,填平了。
它就像是一个沉默的管家。
它不说话,不抢戏,界面极其简陋,甚至连个像样的图标都没有。
但当你需要它的时候,它总是能以最快的速度,把你想要的东西交给你。
这种被工具理解的感觉,真的很美妙。
在这个充斥着各种臃肿、复杂、甚至恨不得把广告塞到你嘴里的软件世界里。
fzf 就像是一把打磨得极其锋利的瑞士军刀。
冷冽,精准,纯粹。
它提醒着我们,真正的效率工具,应该是无形的。
不应该成为你工作的负担,而应该成为你思维的延伸。
如果你也是一个经常需要和命令行打交道的人,或者你只是想体验一下那种“指哪打哪”的快感。
不妨去试一下 fzf 看看。
也许你会和我一样,在某个深夜的终端前,发出一声感叹:
这,才是工具该有的样子啊。
GitHub 项目地址:https://github.com/junegunn/fzf
