7.6 万 Star,这个相见恨晚的神器,彻底拯救了我的命令行。

7.6 万 Star,这个相见恨晚的神器,彻底拯救了我的命令行。
7.6 万 Star,这个相见恨晚的神器,彻底拯救了我的命令行。

说实话,我有段时间特别抗拒打开终端。

不是因为我不喜欢写代码,也不是因为害怕黑底白字。

纯粹是因为,太麻烦了。

特别是当我想找一个,“我明明上周才运行过,但又想不起来具体参数”的命令时。

我通常的做法是,疯狂按“向上”箭头,按得手指头都酸了,眼珠子盯着屏幕一行行闪过,生怕错过了。

或者用那个笨笨的 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,它自动匹配 configconfigsconf.yml

不仅支持模糊匹配,甚至你打错一两个字母,或者少打几个字母,它也能猜到你想找什么。

它不要求你精准。

它允许你犯懒,允许你模糊。

这就是“人味”。

而且,这玩意是用 Go 语言写的。

即使是在有着几十万个文件的项目里,它的搜索速度,也是毫秒级的。

快到没有任何迟滞感。

这种快,不是那种“我不卡”的快。

而是“心流不被打断”的快。

除了这两个最基础的用法,fzf 最强的地方在于,它遵循了 Unix 的哲学:

做好一件事,然后可以通过管道(Pipe)连接一切。

你可以把它接在任何命令后面。

比如,你想杀掉一个进程。

以前你得 ps -ef | grep xxx,找到 PID,然后 kill -9 PID

现在,你可以写一个简单的脚本,让 ps 的结果通过 fzf 筛选,选好后直接传给 kill

整个过程,不用沾染鼠标,手指在键盘上跳动几下,任务结束。

甚至,配合 Vim/Neovim 之后,它更是强到离谱。

在代码编辑器里,想找个文件,想找个函数定义,呼出 fzf,秒切。

说实话,用了 fzf 这么久。

我最大的感触,并不是它技术有多牛逼(虽然确实很牛逼)。

而是它带给我的一种,掌控感

我们每天在电脑前,其实有大量的时间,都浪费在了“找东西”这件琐事上。

找文件、找命令、找代码、找笔记。

这些琐事,像是一个个微小的减速带,不断地打断我们的思路,消磨我们的耐心。

甚至让我们在面对复杂任务时,产生一种本能的抗拒。

而 fzf 做的事情,就是把这些减速带,填平了。

它就像是一个沉默的管家。

它不说话,不抢戏,界面极其简陋,甚至连个像样的图标都没有。

但当你需要它的时候,它总是能以最快的速度,把你想要的东西交给你。

这种被工具理解的感觉,真的很美妙。

在这个充斥着各种臃肿、复杂、甚至恨不得把广告塞到你嘴里的软件世界里。

fzf 就像是一把打磨得极其锋利的瑞士军刀。

冷冽,精准,纯粹。

它提醒着我们,真正的效率工具,应该是无形的。

不应该成为你工作的负担,而应该成为你思维的延伸。

如果你也是一个经常需要和命令行打交道的人,或者你只是想体验一下那种“指哪打哪”的快感。

不妨去试一下 fzf 看看。

也许你会和我一样,在某个深夜的终端前,发出一声感叹:

这,才是工具该有的样子啊。

GitHub 项目地址:github.com/junegunn/fzf