如何在 macOS/Linux/Windows 安装 ripgrep (rg):正则搜索与 .gitignore

三大平台安装 rg,跑第一条正则搜索,并理解 .gitignore 如何过滤结果。

要在仓库里快速搜字符串,ripgrep(命令 rg)比 grep -r 更省事:默认尊重 .gitignore,用 Rust 写的并行搜索也快。本教程走 hereink 读者常用的 macOS、Linux 与 Windows 官方安装路径。

检索词是如何安装 ripgrep 并用正则搜索。读完应能在项目根目录跑第一条 rg,并知道怎样让结果自动跳过被忽略的文件。

macOSHomebrew 或官方二进制
Linux包管理器或 cargo
Windowswinget / MSI / Scoop
安装 rg第一条搜索gitignore 规则

ripgrep 解决什么问题

比 grep 少踩坑

grep -r 会扫进 node_modules、dist 和 .git,输出爆炸。rg 默认读 .gitignore、.ignore 和全局忽略规则,适合日常在代码库里找符号。

正则够用就好

rg 使用 Rust 正则引擎,支持 \d、分组、行首行尾等常见写法。不需要背全 POSIX;先会字面量、大小写和文件类型过滤就能覆盖八成场景。

在终端确认版本:rg --version。官方仓库:github.com/BurntSushi/ripgrep。

在三大系统安装 rg

  1. 1
    macOS(Homebrew)

    已装 Homebrew 时执行 brew install ripgrep。验证:which rg 与 rg --version。Apple Silicon 与 Intel 共用同一公式。

  2. 2
    Linux(发行版包)

    Debian/Ubuntu:sudo apt update && sudo apt install ripgrep。Fedora:sudo dnf install ripgrep。Arch:sudo pacman -S ripgrep。若仓库版本过旧,可从 GitHub Releases 下载对应架构的 tarball 解压并把 rg 放进 PATH。

  3. 3
    Windows

    在 PowerShell 或终端运行 winget install BurntSushi.ripgrep.MSVC,或从 GitHub Releases 安装 MSI。Scoop 用户:scoop install ripgrep。新开终端后跑 rg --version。

  4. 4
    可选:用 Rust 安装

    已装 Rust 工具链时:cargo install ripgrep。编译较慢,但适合包管理器没有 rg 的环境。

基础正则搜索

# 字面量(默认大小写敏感)
rg "useState" src/

# 忽略大小写
rg -i "error" .

# 正则:以 function 开头的行
rg "^function\s+\w+" --type js

# 只列文件名
rg -l "TODO" .

# 显示行号并带上下文
rg -n -C 2 "api/v1" 

在仓库根目录执行时,rg 会沿目录向上查找 .git 以定位项目根,并应用该处的忽略规则。

尊重 .gitignore 与例外

需求命令说明
默认行为rg pattern自动跳过 .gitignore 中的路径
也搜被忽略文件rg --no-ignore pattern调试生成物或本地配置时用,输出会很多
额外忽略rg --glob '!*.min.js' foo在默认规则上再排除一类文件
只搜某扩展名rg -t py "def main"-t 与 --type-list 查看内置类型
适合
在 monorepo 或前端项目里找组件名、环境变量、TODO;CI 日志里快速定位报错文件。
不适合
需要修改文件内容(用编辑器或 sd/sed);跨二进制大文件全文索引(考虑专用工具)。
rg 和 grep 可以完全互换吗?

不能。rg 面向目录树搜索,默认递归并尊重忽略规则;grep 更适合管道和单文件。很多团队两者并存。

为什么搜不到 node_modules 里的字符串?

因为 node_modules 通常在 .gitignore 里。需要时用 rg --no-ignore 或进入该目录单独搜,并预期更慢、结果更多。

Windows 上 rg 找不到命令?

安装后关闭并重新打开终端。检查 where rg。winget/MSI 会把可执行文件放进 PATH;若用手动 zip,需自己把目录加入用户环境变量。

搜完代码要对齐方案

终端里定位到文件后,架构讨论仍适合摊在同一张图上。短会不必新工具栈,见 如何创建空间。

即刻开会