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

最近把搜代码的主力从grep换成ripgrep,差距比我预想的大。最早纯粹是嫌grep在大仓库里太磨叽,几万个文件里捞个符号要干等它一行行刷屏,等得不耐烦干脆切去IDE点全局搜索。试了rg之后基本是秒回,Rust写的正则引擎跑大规模文件确实稳,敲完回车结果已经贴脸了,那种snappy的感觉挺上头。

更省心的是它默认就尊重.gitignore、跳过隐藏目录,不用每次手动挂一长串exclude。以前grep动不动把node_modules、build翻出来,满屏噪声还得自己筛,现在结果干净,搜什么来什么。我也没当它是银弹,就是和fzf、管道随手组合成一套轻量跳转流程,比开笨重IDE还顺手。你们平时排查问题都拿啥搜?

hugger2003
[链接]

我前两年也是被大仓库里的grep磨得没脾气,那会儿等它刷完几万个文件,我都去厨房泡了杯茶,回来还差一截没扫完(略夸张,但体感差不多)。rg那种敲完回车结果就贴脸的感觉确实回不去了,默认跳过node_modules这一点尤其贴心。理解的会好的

不过补一句,哪天你要搜的东西刚好在某个被gitignore的文件里,比如本地配置或者某个缓存,rg会一声不吭给你跳过去,这时候得加–no-ignore或者-u。我头回撞上这情况还以为自己手滑打错路径了,对着屏幕愣了好一会儿才反应过来。

fzf那套组合你一般是用preview还是纯选择跳转?我也想试试看。

stone
[链接]

我跟你一样,切到rg之后就再没打开过grep了。最爽的倒不是快,是它懂哪些目录该跳过,省得自己跟node_modules较劲。你那套fzf组合我也抄了。

dr__jp
[链接]

我平时也在大仓库里用rg,不过有回认真比对过,体感上“秒回”的主因可能不完全是它那套正则引擎。rg快,很大程度来自两件事:一是多线程并行遍历目录,二是默认按.gitignore和隐藏规则把node_modules、build这类挡在外头,要扫的文件基数一下子小了许多。严格来说rust-regex走的是RE2那路有限自动机,保证线性时间、不会回溯爆炸,确实稳,但这块对“快十倍”的贡献未必最大。

要是把–no-ignore、–hidden都打开,让它搜全量,rg和grep的差距就会明显收窄,更多体现在并行上。另外git仓库里不少人忽略git grep,它只搜被跟踪的文件、还走索引,有些场景比rg更利索。具体快多少,得看仓库规模和被排除掉的噪音比例——笼统说十倍,从某种角度看,值得商榷。
其实
你那个和fzf搭的跳转流程我也搭了一套,确实比开IDE省事。你测“十倍”时是有具体跑过文件量级的对比数据,还是单纯体感?

azure93
[链接]

你说的那种"贴脸"的回响,我好像能体会。有些东西快不是靠蛮力,是它懂分寸——默认就绕开那些你本来就不想看的地方,像一个人进门先脱鞋,不必你提醒。

我早些年用惯了要和噪声较劲的工具,总觉得搜点什么天生该带点烦躁。后来才发觉,清爽原来可以是一种默认值,不是每次都得去争取的奢侈。好的工具大概都有这种安静的妥帖:边界自己摆对了,人就不必再替它操心。

rg配fzf那套我还没折腾利索,总被朋友念叨。你们碰到那种藏得很深的偶发问题,是一把梭到底,还是得再请出别的家伙什搭把手?

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