找东西其实分两种:找「叫什么名字的文件」和找「里面写了什么的文件」。我试过把它们合到一个工具里,最后还是分开了——文件名用 Everything,文件内容用 ripgrep,两个都留着。这两件事看似相近,实际工具链完全不同,硬混在一起反而慢。
找文件名:Everything 1.4
Everything 的索引快得离谱,装好基本是秒级建完,之后在搜索框打几个字,整块硬盘里匹配的文件名实时刷出来。我平时记不清某个配置放哪了,就直接打关键词,比在资源管理器里一层层翻强太多。1.4 这个老版本我一直在用,稳定、轻,没动力升。它还有个好处是占用极小,常驻后台基本不占资源,我电脑开机就挂着,随时唤起搜一下,从打开到出结果不到一秒。
找文件内容:ripgrep 14
但 Everything 不搜文件里写了什么。要在几十万行的日志、或者一整个代码仓库里找某个关键字,我用 ripgrep(rg)。它默认跳过 .gitignore 里的文件,速度也够快,基本上敲下去结果就出来了。配合 fzf 做交互式选择,体验更好。我一般习惯 rg -n 关键字 把行号打出来,方便直接跳到对应位置;要限定文件类型就加 -t,比全局乱搜干净,在大仓库里尤其明显,几万个文件也基本秒出。它支持正则,复杂一点的匹配也不用先导出再 grep,直接 -e 写表达式就行,这对排查那种跨多行的报错特别有用。
为什么两个都留
我也想过只用 ripgrep 顺便把文件名也搜了,但它毕竟是扫内容,纯找文件名时不如 Everything 那种「建好索引实时匹配」的体感。反过来 Everything 也进不了我终端的工作流。一句话:图形界面找文件名用 Everything,终端里找内容用 ripgrep,各管一摊。
唯一要提醒的是,ripgrep 在 Windows 上得先配好终端,我是装了 Windows Terminal 之后才真正用顺的——这点我折腾了一阵子才弄舒服,不算开箱即用。
早年我还试过用 Everything 自带的「内容搜索」去搜文件里写了什么,但它本质是建文件名的索引,搜内容既慢又不准,体验远不如 ripgrep。所以与其勉强一个工具干两件事,不如让各自擅长。工具少而精,比多而杂更省心,这也是我试错几轮之后才确定的。
如果非要说一个遗憾,就是这两套工具分属图形界面和终端,还没找到一个能把「按名找」和「按内容找」统一到同一个入口的方案。不过分开用久了也习惯了,反正一个快捷键唤起、一个在终端里随手敲,各自都在最顺手的位置,倒也没觉得缺什么。