搜索工具
在大型代码库里找东西,全靠 Glob 和 Grep。一个按文件名找,一个按内容找。简单但高效。
Glob — 文件名搜索
基于 glob 模式匹配文件路径:
typescript
Glob({
pattern: "src/**/*.tsx", // 所有 TSX 文件
path: "/project" // 搜索起点
})- 支持标准 glob 语法(
*,**,?,{a,b}) - 结果按修改时间排序
- 任意代码库规模都能快速返回
常用模式
| 模式 | 用途 |
|---|---|
**/*.ts | 所有 TypeScript 文件 |
src/**/index.ts | src 下所有入口文件 |
*.{js,ts,tsx} | 多扩展名匹配 |
!**/node_modules/** | 排除 node_modules |
Grep — 内容搜索
基于 ripgrep 的高性能内容搜索:
typescript
Grep({
pattern: "function\s+\w+", // 正则:所有函数定义
type: "ts", // 只搜 TypeScript 文件
output_mode: "content", // 显示匹配行
context: 3 // 显示前后 3 行上下文
})输出模式
| 模式 | 返回内容 |
|---|---|
files_with_matches | 只返回文件路径(默认) |
content | 返回匹配行及上下文 |
count | 返回匹配计数 |
高级特性
- 完整正则语法
- 按文件类型过滤(
type: "js") - Glob 模式过滤(
glob: "*.tsx") - 多行匹配(
multiline: true) - 结果分页(
offset+head_limit)
Glob vs Grep 选择
- 知道文件名模式 → Glob
- 知道文件内容关键词 → Grep
- 两个都不确定 → 先 Glob 缩小范围,再 Grep 搜内容