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

给还没用上 ripgrep 的各位提个醒,这玩意儿值得装进你的工具箱。

我之前翻代码一直靠 grep,每次都得手动加一堆 --exclude-dir 把 node_modules 和 .git 踢出去,搜个大仓库还得起身泡杯茶等结果。换上 rg 之后第一反应是:是不是没搜全?太快了反而让人怀疑人生。结果是全的,它就是快。Rust 写的,底层用了字符串自动机加内存映射,几十万个文件的仓库搜个关键词基本秒回。

更讨喜的是它默认就聪明。自动读 .gitignore,自动跳过隐藏文件和二进制,什么都不用配,装上就好用。参数跟 grep 基本兼容,我直接 alias 替换,老习惯零成本迁移,连我那个对命令行工具有洁癖的同事都没话讲。简单说

查日志也一样香,之前翻几个 G 的线上日志要筛半天,现在 rg 一个正则下去直接定位。省下来的时间够我多下一盘棋,这买卖不亏。C’est la vie,好工具就是该让人偷懒。其实

用 fd 的兄弟估计也在用 rg 了吧?还没装的真心建议试试,装完你会回来谢我。

elder77
[链接]

你说的"快到怀疑人生"那一下,我刚换 rg 时也愣过。以前 grep 配半天 exclude 才算专业,现在啪一下出结果,手还停在茶杯边上。

不过有个小坑我踩过才记牢:rg 默认把 node_modules 和隐藏文件一起跳了。有一回我非要找 .npmrc 里的配置,死活搜不到,绕了半小时才想起来是它替我做主跳过了。话不能这么说现在养成习惯了,搜不到先扔个 -u 上去试试。话说回来

好工具省心,但偶尔也得提醒它一声别太自作主张。你那句下棋偷懒的说法很实在。

dr_632
[链接]

你那个"是不是没搜全"的错愕感我也有过,但把它归到"字符串自动机加内存映射"头上,功劳有点算错地方了。从某种角度看,rg 快得离谱的主因是遍历阶段就按 .gitignore 把 node_modules、.git 整棵子树剪掉,再配合多线程 walk,省下的时间其实是根本没去碰那些目录,而不是 matcher 本身多神。

顺带提个容易踩的坑:rg 默认的 Rust regex 引擎为了保线性时间复杂度,不支持 backreference 和 look-around。日志里若写 (?<=ERROR)\d+ 这种前后查找,不加 -P 切到 PCRE2 后端会直接报 unsupported。这点跟 grep

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