给大家安利一下这个极其强大的命令行文本搜索神器——ripgrep (简称 rg)!它是一个用 Rust 编写的开源跨平台(支持 Windows, macOS, Linux)代码搜索工具。你可以把它看作是传统 grep 的现代“超级加强版”。
🌟 为什么推荐使用 ripgrep?
⚡ 极速搜索:得益于 Rust 强大的正则表达式引擎和高级底层优化(如使用 SIMD 指令的 Teddy 多模式匹配算法),它的搜索速度在同类工具(如 grep, ag, pt 等)中几乎处于碾压级别的领先,无论是在单文件还是在包含数十万个文件的庞大代码库中。
🧠 开箱即用的“智能”默认项:这是它备受开发者喜爱的原因之一。它默认会自动尊重你的 .gitignore 和 .rgignore 规则,并且自动跳过隐藏文件和二进制文件,让你无需每次都输入冗长的排除参数,就能得到最相关的搜索结果。
🌍 无缝的 Unicode 支持:全面支持 Unicode 字符搜索(甚至是像 \p{Greek} 这样的 Unicode 分类),更厉害的是,它能在保持极高搜索速度的同时处理 Unicode,不会像其他工具那样在开启此功能时产生严重的性能损耗。
💡 超实用的日常高频命令(CheatSheet):
基础搜索:rg "TODO" —— 在当前目录及其子目录下递归搜索包含 "TODO" 的文件。
忽略大小写:rg -i "image" —— 开启大小写不敏感搜索。
限定文件类型:rg -tpy "pattern" —— 只在特定类型的文件中搜索(例如 -tpy 代表仅在 Python 代码中搜索),排除其他干扰。
查看上下文:rg -C 2 "pattern" —— 显示匹配内容的上下文(前后各显示 2 行),帮你快速结合语境理解代码逻辑。
只看文件名:rg -l "pattern" —— 仅列出包含该内容的文件名,非常适合通过管道符配合其他程序(比如 Prettier 格式化工具)进行批量操作。
全盘搜索(不忽略任何文件):rg -uuu "pattern" —— 停用所有智能过滤,强制搜索包括隐藏文件、二进制文件和被忽略文件在内的所有内容,行为类似于传统的 grep -a -r。
如果你还没用过,非常推荐用包管理器(例如 Mac 上的 brew install ripgrep 或 Rust 的 cargo install ripgrep)安装体验一下,绝对能大幅提升你的开发效率!
大家平时都在用什么快捷工具或命令来搜索代码呢?欢迎在评论区一起交流补充!