代码搜索替换工具对比:grep 现代替代方案 2026 版
对比 grep、ripgrep、sift、codesearch、Google Code 等现代代码搜索工具。高效查找、替换、批量处理。
- ⭐ 50000
- CLI
- Search
- GPL-3.0
- 更新于 2026-05-18
什么是代码搜索工具? #
代码搜索工具帮助开发者快速定位代码片段、模式或引用。从 grep 到 ripgrep,再到 AI 驱动的搜索。
传统工具:grep #
基本用法 #
# 搜索关键字
grep "TODO" *.py
# 递归搜索
grep -r "TODO" src/
# 高亮显示
grep --color=always "TODO" src/
# 排除目录
grep -r --exclude-dir=node_modules "TODO" .
# 行号显示
grep -n "TODO" src/*.py
现代工具:ripgrep (rg) #
安装 #
# macOS
brew install ripgrep
# Ubuntu
apt install ripgrep
# 从源码
cargo install ripgrep
高级用法 #
# 搜索 Python 函数
rg "def \w+" src/
# 正则表达式
rg "TODO|FIXME|HACK" --type py
# 精确匹配
rg -F "exact string" src/
# 二进制文件搜索
rg -u "pattern" # 包括二进制
# 行首右对齐
rg "^ " src/ # 搜索 4 空格缩进
配置 .rgignore #
# .gitignore 复制到 .rgignore
node_modules/
dist/
*.min.js
搜索工具对比 #
| 工具 | 速度 | 语法 | 特性 |
|---|---|---|---|
| grep | 基准 | 基础 | POSIX |
| ripgrep | 10x | PCRE/SPIRAL | .gitignore |
| sift | 5x | PCRE | 二进制 |
| codesearch | 3x | Greasemonkey | 大规模 |
AI 驱动搜索 #
Sourcegraph #
# 安装 CLI
curl -sSL https://sourcegraph.com/.api/src-cli/src_linux_amd64 -o /usr/bin/src
chmod +x /usr/bin/src
# 搜索
src search "func processData"
Aider 代码搜索 #
# 通过 AI 理解上下文
from aider import CodeSearcher
searcher = CodeSearcher()
results = searcher.search("处理用户认证的函数")
替换工具 #
sed #
# 替换所有 .js 文件中的 var 为 let
sed -i 's/\bvar\b/let/g' *.js
# 批量替换
sed -i 's/old/new/g' $(find . -name "*.py")
ripgrep + sed #
# 高级替换
rg -l "TODO.*FIXME" | xargs sed -i 's/TODO.*FIXME/已优化/g'
ed #
# 行级编辑
ed -s file.py <<EOF
10s/旧代码/新代码/
w
q
EOF
大规模搜索 #
代码搜索引擎 #
| 工具 | 规模 | 用途 |
|---|---|---|
| OpenGrok | 10M+ 文件 | 全文搜索 |
| Sourcegraph | 1B+ 函数 | 代码导航 |
| GitHub Code Search | 公开仓库 | 快速查询 |
Kibana 代码搜索 #
# 通过 Elasticsearch 索引代码
# 示例查询
GET /code/_search
{
"query": {
"match": {
"content": "异常处理"
}
}
}
VS Code 集成 #
内置搜索 #
Ctrl+P -> *.py:TODO
Ctrl+Shift+F -> 搜索整个工作区
扩展工具 #
- Code Search:Google 风格搜索
- GitLens:Git 提交搜索
- Search Node Modules:排除 node_modules
高级技巧 #
多文件替换 #
# ripgrep + perl
rg -l "old_pattern" | xargs perl -pi -e 's/old_pattern/new_pattern/g'
只改特定文件类型 #
# Python 文件
rg -tpy "TODO" | xargs -r sed -i 's/TODO/OBSOLETE/g'
大小写敏感搜索 #
rg --case-sensitive "MyFunction"
单词边界 #
rg "\bTODO\b" # 完整单词匹配
性能优化 #
缓存 #
# ripgrep 有内置缓存
export RIPGREP_CONFIG_FILE=~/.ripgreprc
硬链接 #
# 避免重复扫描
ln -s /large/project /tmp/scan
rg "pattern" /tmp/scan
常见问题 #
Q: ripgrep 支持中文吗?
答:支持。UTF-8 编码下正常搜索中文。
Q: 如何搜索函数定义?
答:rg "^def \w+" 或 rg "^function \w+"
Q: 大文件卡顿?
答:用 -F 精确匹配,或 --max-count 限制。
总结 #
grep → ripgrep → AI 搜索,代码搜索从「找」到「懂」的演进。
参考:ripgrep.github.io、sourcegraph.com 更新:2026-05-18
💬 留言讨论