> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# ast-grep vs. ripgrep
- URL: https://www.hubwiz.com/blog/ast-grep-vs-rigprep/
- Published: 2025-12-22T09:47:08.000Z
- Updated: 2025-12-22T09:47:08.000Z
- Description: ripgrep 就像快速浏览一本书。ast-grep 就像理解其背后的语法。两者各有用途。使用 ripgrep 可以快速解决问题，而 ast-grep 则适合那些不能出错的情况。
- Author: admin
- Tags: TOOL, #Import 2026-10-14 14:41

如果您曾经处理过大型代码库，您可能遇到过这种情况：您使用 grep 或 rg 查找模式，结果搜索结果突然爆出大量注释、字符串或测试模拟中的无用匹配项。

您滚动几分钟才能找到一行真正的代码。

这时您开始希望您的搜索工具能够真正理解代码。这正是 ast-grep 的功能。

![](https://www.hubwiz.com/blog/content/images/2025/12/image-351.png)

## 1、简述

ripgrep (rg) — 非常适合快速的文本搜索。

ast-grep — 非常适合结构化、语法感知型搜索。

一个像金属探测器，另一个像 CT 扫描。

## 2、ripgrep：快速简便

ripgrep 是我们常用的命令行工具。当您需要快速查找文本时，它堪称完美之选。

示例：

```
rg -n 'console\.log\(' -t js
```

您将立即看到所有包含 console.log( 的行。无需设置，无需等待。

这对于快速检查非常有用，例如查找日志、待办事项或配置项。但它无法区分代码和注释掉的代码。

## 3、ast-grep：理解代码

ast-grep 则截然不同。它不只是搜索文本，而是将您的代码解析为抽象语法树 (AST)。基本上，它以与编译器相同的方式理解您的程序。

这意味着：

```
ast-grep run -l TypeScript -p 'import $X from "$P"'
```

此命令检测实际的 import 语句，而不是字符串或注释中的随机单词。这就是语法感知搜索和语法盲搜索之间的区别。

## 4、何时使用它们

让我们保持简单。

| 目标       | 工具       | 为什么                     |
| -------- | -------- | ----------------------- |
| 需要快速文本搜索 | ripgrep  | 快速便捷                    |
| 需要结构化结果  | ast-grep | 识别代码语法                  |
| 两者兼备     | 两者皆可     | ripgrep 速度快，ast-grep 准确 |

## 5、无悔重构

ast-grep 的真正优势在于代码转换。

假设你想将所有 var 声明替换为 let。你可以尝试全局查找替换，但这很冒险。它会影响类似这样的注释：

```
// don't use var anymore
```

使用 ast-grep，就安全多了：

```
ast-grep run -l JavaScript -p 'var $A = $B' -r 'let $A = $B' -U
```

现在它只会修改真正的 var 语句。没有误报，没有破坏代码。

这就是使用抽象语法树 (AST) 的优势——这个工具区分代码和非代码。

## 6、兼顾速度与精准

如果你的代码库很大，这里有个小技巧：先用 ripgrep 筛选文件，然后交给 ast-grep 处理。

示例：

```
rg -l -t ts 'useQuery\(' | xargs ast-grep run -l TypeScript -p 'useQuery($A)' -r 'useSuspenseQuery($A)' -U
```

这条命令首先查找所有包含 `useQuery(` 的文件，然后将其替换为 `useSuspenseQuery()` ，但仅限于实际代码。

快速 + 精准 = 更轻松。

## 7、如何安装 ast-grep

如果你还没有安装，安装过程很简单。

```
brew install ast-grep
```

或者：

```
cargo install ast-grep
```

你也可以请求你的 AI 代码助手（例如 Claude 或 Codex）帮你安装。

## 8、思维模型

- ripgrep 关注的是代码行。
- ast-grep 关注的是语法节点。
- ripgrep 速度更快。
- ast-grep 更智能。

如果你要搜索文本，请使用 ripgrep。如果你要修改代码——重构、重写或检查——请使用 ast-grep。

而且大多数情况下，你会同时使用两者。

## 9、结束语

不妨这样想：

ripgrep 就像快速浏览一本书。ast-grep 就像理解其背后的语法。

两者各有用途。使用 ripgrep 可以快速解决问题，而 ast-grep 则适合那些不能出错的情况。

下次当你发现自己需要手动滚动浏览数百个误报时——也许是时候让你的搜索工具像编译器一样思考了。

---

原文链接：[Supercharge Your Codex or Claude Agents with ast-grep: Smarter, Syntax-Aware Code Search](https://medium.com/coding-nexus/supercharge-your-codex-or-claude-agents-with-ast-grep-smarter-syntax-aware-code-search-d6f69a9c4cad?ref=hubwiz.com)

汇智网翻译整理，转载请标明出处