ripgrep 14.1 更新解读:搜索更快、匹配更准,这次升级值得做
【免费下载链接】ripgrepripgrep recursively searches directories for a regex pattern while respecting your gitignore项目地址: https://gitcode.com/GitHub_Trending/ri/ripgrep
ripgrep 14.1 这一轮更新(14.0 到 14.1.1 共六个版本)带来三件实在的事:搜索更快、不再漏掉本应匹配的行、大目录遍历不再无限吃内存。对普通用户这是一次低风险升级,下文讲清值不值得升、怎么升。
先说结论:这次要不要升
如果你高频用 rg 搜代码,且终端支持超链接(VS Code 终端、iTerm2、WezTerm 等),升级收益最直接,建议直接上 14.1.1。脚本里若同时用了-C和-A/-B上下文参数,先看完下文的行为变化再动手。其余情况,14 系列全是向后兼容的增量,13.x 及更早版本的用户没有任何不升的理由。
最值得关注的改动
文件路径变成可点击的超链接 🔗
这一轮 ripgrep 14.1 新功能中最直接的一项:新增--hyperlink-format标志,开启后 rg 输出里的文件路径会变成终端超链接(OSC 8),在支持它的终端里点击即可跳到编辑器对应位置,不用手敲路径。目前该功能需要手动开启,官方提到未来可能改为默认。
rg --hyperlink-format default "TODO" # VS Code 终端 rg --hyperlink-format vscode "TODO"实现位于 crates/printer/src/hyperlink/,想深入了解生成逻辑可以翻一翻。
搜索速度有明显提升 ⚡
14.0 重写了正则引擎,并行目录遍历也换成了工作窃取(work stealing)调度。多数查询你感觉不到差异,但带\b环视(如\bfunc\b)和含内部固定字符串的模式会明显变快,大目录下的并行扫描竞争也更少。不需要改任何配置,升级即生效。
修复"漏匹配"的假阴性 bug
14.1.1 修了一个会让 rg 忽略本应匹配行的问题:内部文字优化与多种策略叠加时会产生错误结果,例如(?i:e.x|ex)之前匹配不到e-x。如果你常用大小写不敏感或带替代分支的复杂模式,这条与准确性直接相关,无需任何操作,升级即可。
其余变化一览
- 修复遍历目录树时内存无限增长的问题(crates/ignore/),扫描超大仓库更稳
--sortr=path恢复可用(14.0.x 中曾是占位实现)--null-data --line-regexp组合的行为回归已修复- Windows 下
cargo install ripgrep恢复正常(此前 Manifest.xml 未打包进 crate) - fish shell 补全修复并进一步改进
- 新增 armv7 三个 Linux 目标的预编译二进制(gnu/musl)
- 移除
simd-accel特性,自定义构建需去掉该 feature - 新标志:
--stop-on-nonmatch、-d(--max-depth的短形式)、--generate(生成补全脚本和 man 页) - Lean、Meson、Ada、TypeScript 等文件类型过滤新增或改进
怎么升级到最新版本并验证
按你的环境选一条即可:
# Homebrew(macOS / Linux) brew upgrade ripgrep # Rust 工具链(--version 14.1.1 锁定本文明确的版本,不写则装最新) cargo install ripgrep --version 14.1.1 # 源码构建 git clone https://gitcode.com/GitHub_Trending/ri/ripgrep cd ripgrep cargo build --release ./target/release/rg --version无论哪种方式,最后跑一条确认版本号:
rg --version输出里还会显示 PCRE2 是否可用,方便确认构建完整。
升级后留意这些点
-A/-B不再完全覆盖-C:rg -C1 -A2现在等价于rg -B1 -A2,脚本里若有这种组合,核对一下输出行数。- 标志覆盖行为整体更一致(底层解析库更换),错误文案略有变化;
--no-ignore --ignore-vcs现在按预期工作。 - 自己编译过 rg 的:构建参数里的
simd-accel需要删掉,该特性已被移除。 - 超链接目前是 opt-in,官方提到未来可能转为默认,别把当前输出格式写死在工具链里。
升级本身几分钟就能完成,省下的时间留给搜索。遇到匹配异常或想反馈超链接体验,直接到项目的 issue 或讨论区提即可。
【免费下载链接】ripgrepripgrep recursively searches directories for a regex pattern while respecting your gitignore项目地址: https://gitcode.com/GitHub_Trending/ri/ripgrep
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考