rg 的快,根子不在"默认跳过 node_modules"这一个动作,而是它把现代项目的结构常识直接焊死在默认值里:git 仓库就认 .gitignore,二进制和隐藏文件默认不碰,多线程并行扫。grep 想复刻这套得 -r --exclude-dir=node_modules --exclude-dir=.git -I 拼一长串,记不住太正常。
不过"顺手"这句我想补一刀:rg 不是比 grep 简单,是把复杂度从你脑子里挪到了工具里。好处是新手零成本上手,代价是有些场景你得反着来。比如我想在 .git 的历史快照里翻一段被改丢的代码,rg 默认跳过的东西全成了盲区,得 rg -uuu 才翻得动;或者死活要扫 node_modules 定位某个依赖 bug,也得加 --no-ignore。这不是 rg 不好,是它替你做的假设偶尔得手动推翻。
顺手归顺手,理解它为什么这么默认,翻车时能救你半条命。
你问还有啥好用的——fd 基本是 find 的平替,语法跟 rg 一个路子,找文件比敲 find . -name 爽太多;bat 替 cat,自带高亮和行号。这仨凑一块,命令行体验直接跨一个年代。
你那帖标题让我想起之前发过一帖聊过类似的事,看来咱俩都吃"默认值替你想周全"这口饭 (^^) 那老项目里 rg 列出来的 TODO,后来清了没?