资讯动态

ripgrep 使用教程:替代 grep 的命令行代码搜索工具

发布时间:2026/8/30 10:05:56 来源:尧图企业网站定制
ripgrep 使用教程替代 grep 的命令行代码搜索工具【免费下载链接】ripgrepripgrep recursively searches directories for a regex pattern while respecting your gitignore项目地址: https://gitcode.com/GitHub_Trending/ri/ripgrepripgrep 是一个递归搜索目录的命令行代码搜索工具你给它一个正则它自动跳过 gitignore 排除的文件多线程跑完全库。本文按安装、速度来源、日常场景、配置、排查的顺序带你把它用熟。装好并跑通一条命令拿到第一个结果有 Rust 环境的话直接源码构建cargo build --release # 编译 release 版 cargo install --path . # 安装到 ~/.cargo/bin没有 Rust 就用包管理器apt install ripgrep 或 brew install ripgrep拿到的是同一个 rg。装完确认 ~/.cargo/bin 在 PATH 里然后到任意项目目录跑第一条命令rg fn main # 输出格式文件:行号:内容命中词高亮第一次运行你就会注意到三件事.git、target、node_modules 这些被忽略的目录根本没进结果二进制文件被静默跳过高亮颜色默认开启。也就是说零配置就是可用状态。它凭什么这么快并行、跳过与 SIMD速度来自四个机制叠加每个都只说一句。第一是并行。crates/core/ 的主流程按 CPU 核心数开线程每个线程各领一批文件搜完合并。代码库越大收益越明显单线程工具搜一个中型仓库要几十秒的活rg 通常一两秒内结束。第二是跳过。搜索前先按 .gitignore、.ignore、.rgignore 和内置的隐藏文件、二进制规则过滤遍历逻辑在 crates/ignore/。一个文件被跳过就省掉一次完整的读取。第三是内存映射。crates/searcher/ 用 mmap 读文件内核按需分页取数没有用户态拷贝的开销。第四是字面量优化。crates/regex/ 先从正则里抽出字面量子串用 SIMD 加速的算法定位候选位置再做完整匹配。直观感受搜 console.log 这类字符串rg 比传统 grep 快出几十个百分点甚至数倍文件越多差距越大。按场景找命令定位代码、过滤类型、只列文件名场景一定位函数或报错。rg --smart-case get_user # 模式全小写时自动忽略大小写 rg -C 2 bind( # 命中行前后各带 2 行上下文场景二按文件类型过滤。内置类型名覆盖主流语言用 -t 包含、-T 排除rg -t rust impl Drop # 只搜 Rust 文件 rg -T py eval( # 排除 Python 文件 rg --type-list # 查看内置类型名场景三只要文件名或者只要数量。rg -l TODO # 只输出文件名 rg --count TODO # 输出每个文件的匹配行数场景四压缩文件。不用手动解压-z 自动处理rg -z error logs.tar.gz # 自动解包归档再搜注意 -z 只认常见归档和压缩格式gz、xz、zst、zip 等搜不到时先确认扩展名在支持列表内。配置一次长期省心全局配置与项目忽略配置分两级全局一份项目一份。全局配置放 ~/.ripgreprc每行一个参数不用引号# ~/.ripgreprc 内容示例 --line-number --smart-case --max-columns150从此你终端里的每次 rg 搜索都自动带行号、智能大小写超长行截断到 150 字符。这份 ripgrep 配置写一次就够了不用再记参数。项目级在仓库根目录放一个 .rgignore语法和 .gitignore 相同且优先级高于 .gitignore# 项目根目录的 .rgignore /dist *.log团队里公认该跳过的文件写进这个文件并入库所有人的搜索结果就保持一致新同事也不用口头传参。踩坑与排查搜索慢、颜色异常、搜不到文件现象搜索慢。排查动作按顺序来先缩小目录深度再排除大文件最后确认没有把依赖缓存这类未被忽略的大目录整个搜进来。rg --max-depth 2 pattern # 只搜 2 层以内 rg --max-filesize 1M pattern # 跳过大于 1M 的文件现象没有高亮或颜色混乱。先看 $TERM 是否有值且合理再分别强制开、关颜色验证是终端问题还是参数问题rg --coloralways pattern # 强制高亮 rg --colornever pattern # 纯文本输出现象明明存在的文件没出现在结果里。ripgrep 默认跳过隐藏文件和被 gitignore 的文件用 -uu 强制全搜rg -uu pattern build/ # 连隐藏和被忽略的文件也搜强制后仍搜不到问题多半在正则本身换 rg -F 做字面量匹配试一次排掉转义和模式书写的问题。把 ripgrep 用进日常工作流一句话回顾ripgrep 是零配置就能用的替代 grep 的搜索工具速度来自并行、跳过与 SIMD长期配置只有 .ripgreprc 和 .rgignore 两个文件。下一步在你现在的项目里用 rg 替换掉一次 grep 查询对比输出。习惯彩色高亮和 文件:行号 的格式之后你的肌肉记忆会替你做剩下的事。【免费下载链接】ripgrepripgrep recursively searches directories for a regex pattern while respecting your gitignore项目地址: https://gitcode.com/GitHub_Trending/ri/ripgrep创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价