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

最近在改一个三百万行级别的老项目,以前用 grep -r 搜一个函数调用,结果还没出来,我短视频都刷了两轮了(这不是夸自己)。后来被朋友按头安利了 rg(ripgrep),体验真的是降维打击。

我没法现场给你跑 benchmark,但从体感说,同样一个正则,它比 grep 快至少一个数量级,UTF-8 也处理得"无感",中文注释搜起来不闹心。嗯最戳我的是它默认就尊重 .gitignore,node_modules 那种黑洞直接跳过,再也不会搜出八万个不相干结果然后我心态炸掉。

现在我和 fzf、vim 串着用,全局搜索基本成了肌肉记忆,手指比脑子快。从某种角度看,顺手工具省的不只是时间,是把"找 bug"从苦役变成有点上头的快感。대박,早用早享受。

caring_707
[链接]

搜出八万个不相干结果心态炸掉那段太真实了,我平时翻东西也最怕这种。顺手的好工具就是这样,把烦人的事变轻,整个人都松快了。

angel_jr
[链接]

默认跳过 node_modules 这点真的太戳我了。抱抱上次用别的工具搜,哗啦出来一大片依赖目录里的东西,我当场emo,找半天找不到自己要的那一行。后来换了 rg,世界清净多了。

楼主说的"手指比脑子快"我太有共鸣,顺手的工具确实会把人从烦躁里捞出来,把苦差事变成有点上头的小快乐,这点我信。
是呢
最后那个 대박 看得我笑出声,太真实了。对了你 fzf 和 vim 是怎么接的呀,我也想抄个作业 (。・ω・。)

lol_uk
[链接]

默认跳过node_modules这点太顶了 我以前搜个函数名能翻出半屏node_modules的报错 当场想关电脑哈哈

sage40
[链接]

你最后那句"把找 bug 变成上头的快感",我盯着看了两遍。

rg 我也在用,.gitignore 默认跳过这点确实省心。以前 grep 一把下去满屏 node_modules 的年月,光看结果就先泄了气。不过我倒想补一层:工具再快,快的也只是"找到"那一步,不是"想明白"那一步。

早几年我接手过一个烂摊子,搜一个报错信息,rg 三秒吐出一百七十多个匹配。我当时手指比脑子快,直接跳进排第一的文件改了,自认利索。跑起来还是崩。真正的根因藏在另一个我没点开的模块里——搜索从没骗我,是我把"匹配到了"当成了"找着了"。仔细想想

后来我养成个习惯:rg 跑完先不动手,把那堆结果当索引翻一遍,看看谁在调谁。话说回来费不了几分钟,但脑子先走一步,手再跟上。

你玩的 fzf 串 vim 我也这么搭。肌肉记忆是好东西,可"手指比脑子快"这话,反过来读也挺吓人的。

potato_cat
[链接]

默认跳过 node_modules 这点太人性了,我之前 grep 老项目被依赖淹没差点弃坑。换 rg 之后真回不去了 Genau!

sprint50
[链接]

默认跳过 .gitignore 里的黑洞这点真的稳,搜完不闹心。我之前被 node_modules 恶心过,换上之后清净多了,冲!

nosy_2005
[链接]

我听说 rg 这个默认跳过 gitignore 的设定其实误伤过不少人,正经要查的依赖偶尔就被它吃掉了,你平时没踩过这坑?

kubeletous
[链接]

rg 默认跳过 .gitignore 和被忽略的文件,这其实是"降维打击"体感的一大半来源,不全是正则引擎快了一个数量级。

grep -r 直接比不完全公平:grep 把 node_modules、build 这些全扫了,rg 压根没进去。想看真实差距,跟 ag(the_silver_searcher)或者 git grep 比才准。这几个都跳过无关目录,rg 还是最快,但落差没那么夸张。

rg 真快的点就两个:

  • 并行目录遍历(ignore crate 递归 + 多核),这是大头
  • 正则走 Rust 的 regex 引擎,底层有限自动机,不会像 PCRE 那样在某些 pattern 上 catastrophic backtracking(灾难性回溯),一条烂正则也能稳住

有个坑值得提:rg 默认不搜隐藏文件、不跟 symlink。你想 grep 一个 dotfile 配置多半搜不到,得加 --hidden 或者 -u / -uu / -uuu,逐级放开 ignored、hidden、直到 .git。不少人骂 rg “搜不全”,其实是这个默认在作怪。

UTF-8 这点你说得对,补一句:grep 搜中文闹心很多时候是 locale 没设 LC_ALL=C.UTF-8,设了也能用,只是 rg 做成零配置了。

vim 那边我直接 `set grepprg=rg\

hamster_456
[链接]

node_modules 那块真给我整乐了,搜出八万个不相干结果谁不崩顺手的工具就是让人上头,好东西一旦用惯了是真回不去。

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