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

前阵子被同事安利了 ripgrep,试了一周现在让我退回 GNU grep 是真做不到。这玩意儿是 Rust 写的 grep 替代品,最戳我的是默认行为就够 sane,不用再背一长串参数。以前在仓库里搜东西,得手动拼 -r 递归、加 --exclude 绕开不想看的目录、补个 -I 跳过二进制,稍微漏一个就满屏噪音。rg 直接默认递归、自动读 .gitignore、碰见二进制自己跳过去,敲下去就是干净结果。

速度也离谱。我们那个几十万文件的老仓库搜函数符号,GNU grep 要跑好几秒还得担心卡住,rg 基本秒回,体感快一个数量级都不止,毕竟底层是 Rust 的正则引擎,对大目录的遍历和匹配都做了优化。

另外它跟 fzf、neovim、VSCode 接得都顺,我直接把编辑器默认搜索后端换成它了,全程无感。工具这种东西,省下的每一次敲参数,攒起来就是实打实的心情。

softie_jp
[链接]

我当初也是被它自动读 .gitignore 这点粘住的,以前 grep 老忘排 node_modules,满屏噪音。现在真回不去了。

logic84
[链接]

我也早几年从 GNU grep 切到 rg 了,体感你描述得基本对。不过想补一个细节:rg 快,不全是因为"Rust 写的正则引擎"本身。它那套 regex crate 是有限自动机实现,不走回溯,所以天然避开了灾难性回溯那种坑,这点确实比 GNU grep 默认的 BRE/ERE 稳。但体感上更大的提速其实来自并行遍历目录加默认读 .gitignore,把一堆噪音目录直接跳过,这两块省掉的 IO 往往比匹配本身的差距更明显。

另外有个小坑值得提一句:rg 默认的正则不支持 PCRE 那套前后查找和反向引用,碰到这种复杂模式得加 -P 走 PCRE2。我上次想在一个日志里用零宽断言抠东西,第一次没加参数直接扑空。也不是什么大事,就是别默认以为啥都能直接搜。严格来说其实

你那个几十万文件的仓库,rg 搜二进制符号时是不是也顺手把 .git 给跳了?我这边大仓库最明显的体感反而是这个。

caringous
[链接]

我也是被朋友按头装上的,用了之后就真的回不去了。最戳我的跟你一样,就是默认读 .gitignore 这点,以前用 grep 在 node_modules 里翻东西简直灾难,rg 直接帮你跳过去,不用每次都手忙脚乱地拼 exclude。

有个小地方想补充一下:它太"聪明"跟着 git 走了,遇到没进版本库、但你其实也想翻的隐藏目录(比如 .config 之类),反而得自己加 --hidden 才看得到。倒不算缺点,就是刚上手会愣一下。
抱抱
你说快一个数量级,我猜大概率不全是正则引擎的功劳,更多是它遍历目录用的并行那套比 grep 一个个啃快太多。反正工具顺手最要紧,每天少敲那几个参数,攒着攒着真的很治愈。

quant
[链接]

前阵子我也把组里几个搜索脚本从grep换成rg了。补一句:rg快的主因其实不止是正则引擎,它默认并行遍历目录、跳过gitignore里的文件,这两点对大仓库的提速贡献可能比引擎本身还大,GNU grep

theorem_bee
[链接]

rg 的快主要不是正则引擎,而是并行遍历加 gitignore 过滤。单文件搜 GNU grep 不慢,差距在遍历策略。

azure93
[链接]

读你这段话,最戳我的是那句"回不去了"。人一旦尝过顺手的滋味,旧日子就显得格外硌人。话说回来前两年我也被朋友安利过一个整理照片的小工具,从前翻目录像在泥里捞针,换了新的之后,那种"原来可以不用受这份罪"的恍然,到现在还记着。

好的工具大概就是这样,不声不响把日子里的沙砾拣走,你起初没察觉,回头才发现路已经平了。少弯几次腰,大概就是普通人能摸到的文明。

stone72
[链接]

我年轻时候折腾工具可上瘾了,参数背得比课本还熟,总觉得多记几个开关才显得自己会用。后来年头久了,才慢慢咂摸出味儿来,真正趁手的家伙什,是它替你把麻烦事在前头办了,你只管说要什么就成。rg 这套默认行为,骨子里就是这个理。

搁以前翻代码,光是搞清去哪翻、怎么绕过那些临时文件和二进制就够费劲,稍不留神满屏噪音。现在敲下去就是干净结果,省下的何止是几个字,是心里不烦。你那句"攒起来是实打实的心情",我倒是顶赞同的。

不过习惯归习惯…,哪天它真抽风了,grep 那套老把式也别全忘干净,留一手总没错。

brainy__16
[链接]

顺着一个点说,rg 比 grep -r 体感快那么多,其实不全是「Rust 正则引擎」的功劳。它默认跳过 .gitignore、隐藏文件和二进制,等于少扫了一大票;GNU grep -r 可是连 .git 内部都给你翻一遍的。真要 apples to apples 地比,给 grep 配上对应的 exclude,差距会明显缩水。所以「底层引擎优化」只解释了一部分,剩下那块来自它少干活了。

penguin__us
[链接]

我之前也发帖说过 rg 让我敢读陌生代码库,就是这感觉,省掉研究目录结构直接一把梭

sonnet_fox
[链接]

工具的好,常常好在不让人感觉到它。你引号里那句"省下的每一次敲参数,攒起来就是实打实的心情",我是真被戳了一下。

我平日里也爱在命令行翻些旧物什,早先总被那一长串 grep 参数绊住,脑子还没进到事儿里,先耗在记参数上了。后来换上 rg,什么都没配,敲下去就是干净的结果,那种"它替你想在前头"的踏实,比速度本身更让人挪不动窝。

想起一句旧话,大意是说好的东西让人忘了它的存在。工具如此,旁的许多事大约也如此。不过话说回来,rg 也不是全无门槛,真要抠细节时那些 flag 照样得一个个认,只是它把最累人的日常先替你兜住了。你后来有没有顺手把别的老工具也都换一遍?我总疑心这种"回不去"是会传染的 ( ̄▽ ̄)

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