ripgrep 快速上手:三步完成一次全库代码搜索
【免费下载链接】ripgrepripgrep recursively searches directories for a regex pattern while respecting your gitignore项目地址: https://gitcode.com/GitHub_Trending/ri/ripgrep
ripgrep(简称 rg)是一款代码搜索工具,递归扫描目录里的正则匹配,默认跳过隐藏文件、二进制文件和 .gitignore 中声明的内容。读完这篇,你只需三步就能跑通第一次搜索。
它解决了什么问题
你可能有过这种体验:在一个几万行的大仓库里找一段代码,grep 慢得让人想换台电脑,结果还混进来一堆编译产物和依赖目录的噪音,真正有用的一行被淹没了。
ripgrep 的出发点是"少搜无用的、快搜有用的":它按行读取文件,用并行搜索和自动过滤把target/、node_modules/这类目录直接跳过,所以在绝大多数场景下,它的速度是传统逐文件遍历方式的数倍。而且同一套命令在 Windows、macOS、Linux 上行为一致,不用为平台差异操心。
三步跑起来
第 1 步:安装。macOS 和 Linux 一条命令即可(源码安装的话用git clone https://gitcode.com/GitHub_Trending/ri/ripgrep):
brew install ripgrep # Debian/Ubuntu 可用:sudo apt install ripgrep第 2 步:第一次搜索。进入任意项目目录,搜一个你确定存在的词:
rg "hello" .第 3 步:看懂输出。每行结果都是文件路径:行号:匹配内容三段式,比如src/main.rs:42:hello, world。哪一行、在哪个文件、第几行,扫一眼就知道,不用再打开文件确认位置。
5 个高频参数速查
| 参数 | 作用 | 什么时候用 |
|---|---|---|
-l | 只列出有匹配的文件名 | 不关心内容,只要知道"哪些文件里有" |
-i | 忽略大小写 | 搜Error时不想漏掉error |
-tpy | 只搜 Python 文件(py可换任意类型) | 在混合语言仓库里只搜一种语言 |
-d 2 | 最多往下搜 2 层目录 | 目录太深、太慢,只关心浅层 |
-uu | 无视 .gitignore 且搜索隐藏文件 | 目标文件被忽略规则挡在外面时 |
这些参数可以随便叠加,比如rg -il "TODO"就是"忽略大小写、只列文件名的 TODO 搜索"。参数全貌可参考仓库里的 GUIDE.md。
两个真实小场景
场景一:在大型仓库里揪出所有 TODO。接手老项目想看看遗留了多少待办,又不想被依赖目录刷屏,加上类型限定:
rg "TODO" -t rust结果只来自 Rust 源文件,配合-l可以先看"哪些文件还有坑",再逐个点开。
场景二:跳过不想搜的目录。仓库里有个vendor/目录存了上游代码,噪音太大。用 gitignore 风格的排除规则一行搞定:
rg "TODO" -g '!vendor'-g接受的模式和你写在 .gitignore 里的一模一样,!表示排除,比维护额外的忽略文件省事得多。
和谁搭配更好用
- fzf:把 ripgrep 的输出喂给它的模糊查找器,键盘上敲几个字母就能跳到你真正想看的那一行。
- bat:ripgrep 告诉你在哪个文件哪一行,bat 用带语法高亮的 cat 把那段代码漂亮地展示出来。
- fd:ripgrep 按内容找,fd 按文件名找,两个组合起来就是"内容 + 文件名"的双通道检索。
写在最后
ripgrep 的设计哲学很简单:默认值替你做了正确的决定,你只管搜。今天装好它,明天你大概率会忘了 grep 的拼写。更多用法细节可以看仓库自带的 GUIDE.md 和 FAQ.md,参数变更历史在 CHANGELOG.md。
【免费下载链接】ripgrepripgrep recursively searches directories for a regex pattern while respecting your gitignore项目地址: https://gitcode.com/GitHub_Trending/ri/ripgrep
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考