【面向AI编程】ripgrep 快速入门

5 阅读2分钟

入职的第一个任务,做 AI 编程平台,前端是 Aionui 开源二开,后端是rust,天知道 rust 是个啥,于是我被迫开始学习用 rust。但不得不说,AI 写代码改 bug 真的爽,还可以跟 AI 学习解决问题的过程。这不,今天就学会了一招:用 rg 快速定位问题。

简介

rg = ripgrep, 是超快的递归文本搜索工具,比系统自带 grep 快很多,默认自动忽略 .gitignore、隐藏文件、二进制文件,用来递归查找项目里的代码、关键词,超爽!不愧是高性能命令行文本搜索工具。

安装

# mac
brew install ripgrep

# ubuntu/debian
sudo apt install ripgrep

# windows (scoop / choco)
scoop install ripgrep
choco install ripgrep

基础语法

rg [选项] "搜索词" [路径]

不写路径默认递归搜索当前目录

1. 最常用最简单的搜索

rg "useState"

当前目录递归搜 useState,自动跳过 gitignore 里的文件、node_modules。

2. 精确整词匹配(避免部分匹配)

rg -w "user"
# 只会匹配 user,不会匹配 userInfo、username

3. 大小写忽略

rg -i "api"
# Api / API / api 全都命中

4. 只看文件名,不看匹配内容

找包含关键词的文件。

rg -l "fetch"

5. 只搜指定后缀文件

# 只在 ts / tsx 文件里搜索
rg "interface" -g "*.ts" -g "*.tsx"

# 排除某些文件/文件夹
rg "axios" -g "!node_modules/**"

-g = glob 过滤;! 代表排除

6. 显示行号 + 上下文

# 匹配行,外加前后2行
rg "CSP" -C2

# 只看上面2行 -B(Before)
rg "CSP" -B2
# 只看下面2行 -A(After)
rg "CSP" -A2

7. 正则搜索

rg默认开启正则

# 匹配 const 开头,后面跟变量
rg "^const\s+\w+"

如果要搜索纯文本,不要正则,加 -F(fixed string)

rg -F "import { useState }"

高频组合

# 1. 在ts/tsx搜索关键词,忽略大小写,显示文件名
rg -i "router" -g "*.ts" -g "*.tsx" -l

# 2. 搜TODO注释
rg -i "todo"

常用参数速查表

参数作用
-i忽略大小写
-w完整单词匹配
-l只列出匹配的文件名
-C N展示匹配行前后N行上下文
-gglob筛选文件,! 排除
-F字面字符串(关闭正则)
-v反向匹配:输出不包含关键词的行
-h不显示文件名

和 grep 核心区别

  1. rg 默认递归搜索,grep 需要加 -r
  2. rg 默认自动忽略 .gitignore、二进制、node_modules
  3. 速度远快于grep,大项目差距巨大

VSCode 搭配

很多VSCode插件底层就是rg;终端里跑rg适合快速批量检索代码库。

补充:其他框架对比

工具特点
rg默认 gitignore、并行、跨平台,现代代码检索首选
grep系统自带,递归需要 - r,不会自动忽略 node_modules
ag/ack老一代搜索工具,性能弱于 rg
git grep只搜索 git 仓库内文件