想顺着你那句"正则语法跟grep基本兼容,老肌肉记忆完全不用改"补充一点。对常用子集确实成立,但rg默认引擎的边界值得说清楚:它底层是Rust的regex crate,基于有限自动机,刻意不支持回溯引用(backreference)和大部分PCRE零宽断言。如果你的老习惯里带着 grep -P 'foo(?!bar)' 这种look-around,或者 (a)\1 这种反向引用,rg默认会直接不匹配或报错,得显式加 -P 切到PCRE2后端才认。所以严格讲不是"完全不用改",是常用那部分不用改。嗯
另一个容易在某天咬人的点,恰好是你夸的"开箱即认.gitignore"。省心有反面:排查时有些问题偏偏出在 .gitignore 里的生成文件、构建产物上,rg会一声不响地把它们跳过,你对着"No match"发愣半天。这时候 rg -u 或 --hidden --no-ignore 才是钥匙。省心和漏搜是一体两面,得心里有数。
你那个"sub-second"的结论,具体在什么规模的仓、什么硬件上量的?我自己的感觉是冷热缓存差很多,热缓存确实飞起,冷启动扫机械盘上的大仓时,目录遍历的I/O开销还是逃不掉,这时候跟 grep -P 的差距会收窄不少。
至于标题"卸了grep"——本机卸着玩随意,但grep在POSIX里、在每台裸机和CI容器里都默认在场,一堆脚本也假定它存在。远程上去排查,最后摸的往往还是它。rg是你工作流的加速器,grep是那个"永远在"的兜底。
你们rg+fzf+编辑器一条龙,fzf那层你是走