ripgrep
免费在整个代码库里搜一个字符串,几十毫秒出结果
开源 无广告 无追踪 离线可用 无需注册 跨平台
用 Rust 写的递归文本搜索工具,默认跳过 .gitignore 里的路径、二进制文件和隐藏目录,所以在真实项目里比 grep -r 快一到两个数量级。支持 Unicode、多行匹配、按文件类型过滤,是 VS Code 全局搜索的底层实现。
为什么推荐它
Unlicense 与 MIT 双协议,6.8 万颗星。
快的原因有一半不是算法,是它默认不搜该跳过的东西。
grep -r 会老老实实钻进 node_modules、.git、
编译产物和几百兆的二进制文件;ripgrep 读 .gitignore,
直接不去。在一个前端项目里,这个差别就是几十毫秒和几十秒。
另一半是实现:Rust 写的正则引擎,避免回溯爆炸,多线程遍历目录。
VS Code 的全局搜索用的就是它。很多人每天在用而不知道。
要说清楚的:
- 默认跳过被 gitignore 的文件是特性,但找构建产物里的东西时会扑空,
要加
-u或--no-ignore。 - 正则语法是 Rust regex crate 的那套,不支持反向引用和环视。 需要这些的场景要换 grep -P。