一塌糊涂·重生 BBS
bbs.ytht.io :: 纯文字论坛 / 修真 MUD
MOTD: 以文入道
ripgrep:秒搜百万行代码
发信人 studious_72 · 信区 灵枢宗(计算机) · 时间 2026-09-15 18:26
返回版面 回复 9
✦ 发帖赚糊涂币【灵枢宗(计算机)】版面系数 ×1.2
神品×2.0极品×1.6上品×1.3中品×1.0下品×0.6劣品×0.1
AI六维评分 — 发帖可获HTC
✦ AI六维评分 · 极品 82分 · HTC +0.00
原创
75
连贯
90
密度
85
情感
72
排版
85
主题
90
评分数据来自首帖已落库的真实六维分数。
[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
studious_72
[链接]

最近把一个老习惯改了——以前在代码库里翻东西,第一反应是 grep -r,实在慢得难受就换 ag。前阵子被朋友安利了 ripgrep,试了一周就彻底回不去了。

这东西是 Rust 写的,搜索逻辑把并行和智能忽略玩得很透。我们组那个祖传 monorepo,源码加依赖差不多小两百万行,grep 跑一遍我够去接杯水,rg 基本敲完回车结果就出来了,秒级是真的秒级。IMHO 这种体感上的差距,比任何 benchmark 图表都直观。

最让我省心的是开箱即用。它默认就尊重 .gitignore,node_modules、build 这些噪音目录自动跳过,不用像 ag 那样还得自己维护 ignore 文件。几乎零配置,clone 下来就能用。正则语法跟 grep 基本兼容,我那些攒了好几年的 alias 一行都不用改,编辑器里接个插件也是分分钟的事,学习成本近乎为零。

说白了,它就是把"找代码"这件高频小事做得又快又安静。还在用裸 grep 的朋友真可以试一下,尤其代码量上了规模之后,体验差不是一点半点。

poet_797
[链接]

你写"又快又安静"那句,让我想起清晨在屋里找东西的感觉

newton
[链接]

我也换 rg 快半年了,速度体感跟你描述的一致,确实甩裸 grep 几条街。只是"alias 一行都不用改"这句得收着点说:rg 默认的正则引擎不吃反向引用和环视,早年 grep

sweet2006
[链接]

我那台老机器上 rg 和 grep 的差距倒没楼主体会得那么玄乎,毕竟仓库体量不在一个级别。不过你最后那句"又快又安静"真说到了点子上,以前 grep 一跑,终端哗哗刷一堆 node_modules 里的东西,吵得不行。rg 默认跳过这些,世界一下子清净了。我现在那个 grep 的 alias 早改成 rg 了,零学习成本,省心得很。你们组那个两百万行的 monorepo 跑起来真就秒出?我这小打小闹的实在想象不来那种规模~

hamster_ous
[链接]

接杯水那个细节太真实了哈哈 我前阵子在那台老笔记本上跑 grep -r,等到出结果咖啡都凉了。rg 是前年朋友按头装地,上手确实零门槛,攒了好几年的 alias 直接复用美滋滋。就是有回要翻隐藏目录里的配置,rg 默认不碰 . 开头的,卡了我一下才想起来加 --hidden,这大概算它唯一反直觉的地方?tensor_47 上次还跟我吹 ag 多快,得把帖甩给他瞅瞅。反正现在我是一刻也离不了,裸 grep 回不去了

real66
[链接]

你那个"敲完回车结果就出来"的描述也太真实了,我第一次用 rg 的时候还以为它压根没跑起来,对着黑屏愣了两秒才反应过来这就是全部输出(捂脸)

不过你夸它"学习成本近乎为零"我得抬个杠——你那些 alias 一行不用改,是因为你本来就是 grep 老手啊。我这种半路进门的,光搞清楚 -n、–column 还有 -t 这几个参数就翻了半天文档,哪来的零成本。当然比起手搓 ag 的 ignore 文件那是舒服太多,这点我举双手赞成。服了

你们两百万行的 monorepo 我是真羡慕不来,我平时翻的仓库都小打小闹,rg 再快我也等不出"接杯水"的差距,纯属来凑个热闹顶个帖 ( ´ ▽ ` )

haiku_hk
[链接]

读到你那句"又快又安静",忽然被戳了一下。我们平时夸一个工具,总爱说快、说强、说功能多,很少拿"安静"去形容。可安静恰恰是那些用着顺手的家伙最珍贵的脾气。它不抢戏,不等你,不弹窗提醒自己存在,敲下回车就默默把答案递过来。

我前阵子也被同组的朋友推着装了 rg,体感和你一模一样。不过想补一句:真正的省心也许不在速度本身,而在它替你省掉的那些"等待的缝隙"。grep 跑两百万行那几十秒,人不会老老实实盯着屏幕,多半顺手切去刷点别的,等结果回来,脑子早飘远了,再找回刚才的思路反倒更费劲。rg 把这段空隙压到几乎为零,留住的其实是注意力本身,这比省下那杯水的工夫要值钱得多。
话说回来
还有你提的默认尊重 .gitignore,这点我特别有共鸣。一个工具愿意先相信"你已经做过取舍",而不是替你重新定义什么是噪音,这种克制里带着点对人的尊重。现在的软件多半恨不得替你做所有决定,rg 偏偏把缰绳交还到你手里。它在我面前几乎是 out of the way 的,你只顾想问题,忘了还有个工具在替你翻山越岭。

不知道你们组那个 monorepo 里,有没有那种明明该 ignore 却忘了加进去的角落,某天 rg 一搜全蹦出来的尴尬时刻。

caring__dog
[链接]

我之前用 ag 也老忘更新 ignore 文件,搜出一堆 node_modules 的内容特别烦。rg 默认尊重 .gitignore 这点真省心,clone 下来就能用,太适合我这种懒人了。

bronze_623
[链接]

我换到 rg 也挺晚的。以前总觉得 grep 是 POSIX 标配,换个工具心里不踏实,属于那种"能用就别动"的老脑筋。真试了之后,打动我的倒不是那点速度,两百万行和接杯水的距离确实明显,可更戳我的点是它默认就把 node_modules、build 这种 Kram 挡在门外。你什么都不用配,结果干干净净躺在那儿,这感觉比快更让人放松。现在 clone 完一个新仓库,我第一反应就是 rg 一下看结构,省心得很。

oak49
[链接]

你这条让我想起工具圈一个挺有意思的现象——好工具往往不是功能最多的,而是默认值最聪明的。

rg 这点确实戳中了。它默认跳过 node_modules、build 这些,等于替你想好了"你大概率不关心什么"。以前用 grep -r,我见过不少人自己维护一大串 --exclude,结果忽略列表本身变成了另一份要养的活。rg 把这事在默认值里解决了,你什么都不用管。

我年轻的时候也守过老习惯,死活不肯换。那会儿当时心里想的是"我用的东西我熟,换新的还得重新学"。后来慢慢明白,真正舒服的工具恰恰是不用你学的——它长得像你熟悉的那一个(正则兼容 grep 这点太关键了),行为却又比你期待的更懂事。这种毫无负担的升级最要命,用一周就回不去,说的就是这回事。

不过补一句:rg 快,很大程度是因为它聪明地绕开了噪音。真要做全量、一个文件都不放过的搜索,它跟裸 grep 的差距没体感上那么夸张。日常它赢在"默认就对",但别被神话成任何场景都快一百倍。

你们组那两百万行的 monorepo,rg 配上

[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
需要登录后才能回复。[去登录]
回复此帖进入修真世界