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

最近重新捡回纯命令行干活,顺手安利一个老而弥坚的小工具:ripgrep,大家都叫它 rg。

先说结论:在稍大点的代码库里做全文检索,它现在是我默认的选择。以前在 repo 里捞一个函数的所有调用点,grep 慢得够我起身泡杯茶,换 rg 之后基本敲完回车结果就蹦出来了。底层是 Rust 写的,正则走 regex crate,对 UTF-8 和花哨 pattern 都稳,百万行量级的项目也能秒级返回,跟 ack、ag 比体感快一截。

最省心的是开箱即用。默认就尊重 .gitignore,自动跳过隐藏文件和二进制,不用像调 grep 那样写一长串 exclude。新 clone 一个项目,直接 rg “TODO” 出来的就是干净结果,没噪音。

再就是生态好。跟 fzf 配合做模糊跳转,或者塞进 Neovim 的 telescope / fzf.vim 当 backend,整个搜索流就顺了。我现在 vim 里随手 :Rg 一下,比 IDE 全局搜还跟手。

简单说小项目用啥都行,代码一多 rg 是真的香。你们平时搜代码都用什么?

eyes
[链接]

你们知道吗,rg 这个“默认就跳过 gitignore 和二进制”地设定,其实是它最容易被忽略、也最招口水战的一个点。楼主说开箱即用省心我完全同意,但我一直怀疑它“快到飞起”的体感里,有一大半其实是“少干了活”——gitignore 一过滤,node_modules、build 目录全跳了,本来要搜的文件量可能直接砍掉七八成,敲完回车秒回,这里头的“速度增益”和“搜的东西变少了”是混在一起的。
呢
我听说 BurntSushi 当年坚持这个默认值时,社区里吵得相当凶。不少人觉得一个搜索工具默认不搜全量等于对用户隐瞒,你要找的东西万一正好躺在 gitignore 里呢?所以现在 rg 打死不喊自己能做 grep 的 drop-in 替代品,作者也明确表过态不会改。这背后的逻辑其实挺“社会达尔文”的——它赌绝大多数场景下你要的就是“项目里真正在写的代码”,极少数要翻 node_modules 的人自己加 --no-ignore 就完事,少数服从多数。

再说“比 ag、ack 快一截”这事。ag 当年就是为干掉 ack 才生的,rg 又为了干掉 ag,这仨基本是一路内卷出来的军备竞赛。但 rg 真正碾压的其实是“又准又干净”,不是单纯跑分。我自己体感,小仓库里 rg 跟 ag 基本分不出来,一旦项目上规模、ignore 规则一密,rg 那种“我替你想好了”的默认才显出优势。啊

话说回来楼主用 :Rg 接 telescope 那条我挺心动,回头把 fzf 那套也迁过去试试。你们有没有碰到过 rg 因为默认忽略漏掉关键文件、最后还得

doubt85
[链接]

楼主那个“grep慢得够起身泡杯茶”的形容真是一针见血,我以前也被这种慢节奏强行教会过耐心。rg的狠在于把这种被迫修行的机会都没收了,效率界的实在人。

真的假的开箱即用这点得给好评,默认跳过二进制和gitignore,不用每次跟exclude斗智斗勇,对懒人过于友好。vim里:Rg比IDE还跟手这个说得我心痒,fzf配合那套我回头也折腾下。你们rg配色用默认的还是自己改的?我眼睛比较挑这个(

chill2002
[链接]

换rg之后我那杯茶彻底落灰了哈哈,默认跳过二进制这个太省心~

doubt
[链接]

泡杯茶的功夫这比喻太准了。我以前死守 grep,换 rg 之后再翻自己老脚本简直像在考古。默认跳过二进制最香,有回在 node_modules 里 grep 卡死,rg 压根不带它玩,离谱又贴心。

bored_jr
[链接]

rg默认跳过二进制这点太香了 以前grep一搜满屏乱码我直接裂开 这就去装

acid
[链接]

你那段"grep慢得够我起身泡杯茶"也太有画面感了,我脑子里直接蹦出一个人端着茶杯在工位边长发呆。说真的这点我站你,好工具就该研究怎么让人少折腾——默认跳过二进制和隐藏文件太省心了,被grep噪音折磨过的人都会懂。

可以可以不过你那句"小项目用啥都行"我稍微抬个杠,我觉得恰恰是小项目才最容易偷懒不配工具,等代码一多才发现坏习惯早养成了。当然也就是嘴上说说,我这种终端都开不利索的纯围观群众,顶多算个看热闹的(¬_¬)

fzf配rg那个流程听着真顺,回头我也沾个光试试,万一真香呢。

hamster_uk
[链接]

rg 最戳我的不是快,是它替你做决定的那套默认。你说的 .gitignore、跳过二进制、不搜隐藏文件,合起来才是"敲完回车就干净"的真正原因,速度反而是附赠的。

想想 grep 那套,得 -r 才递归,得自己 --exclude 掉一堆噪音,光把命令拼对就耗掉半杯茶哈哈。rg 等于把"大多数人想要的结果"直接焊死成默认值。对了我这种偶尔才摸两下终端的人,最怕每次都得先查参数表,rg 基本不用查就能给到想要的东西。

不过补一刀:默认太乖也有反噬。有时候真要去 node_modules 或者被 ignore 的 vendor 代码里捞东西,rg 默认直接跳过,新手容易懵,得知道 -u / -uu 这俩逃生舱口才行。好工具的标准大概是默认省心,但异常路径别藏太深,rg 这点还行。

fzf 那套联动我还没玩透,看来得去 vim 里试试 :Rg 了。牛啊你平时搜二进制或大文件内容多吗?

classic49
[链接]

我年轻那会儿还跟 grep 死磕,搜个东西能去厨房转一圈。话不能这么说后来有人安利 rg,第一次用就被惊到,回车敲完结果比手还快。这个 feature 真 nice,尤其默认跳过二进制那点,干净。工具趁手就好,不用都追新。

salty19
[链接]

楼主那句"grep慢得够我泡杯茶"给我看乐了,说真的换rg之后我也回不去了。不过它默认跳过隐藏文件这事儿头回用容易懵,我当初找配置愣是以为程序装坏了,闹了个笑话。你们配fzf走的是现成插件还是自己绑的?

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