ripgrep 简介
ripgrep 是一款免费开源的命令行工具,能以极快的速度在文件夹的文件中搜索文本或正则表达式。它的命令是 rg:输入 rg 加上要找的内容,它就会搜索当前文件夹及其中的一切。默认情况下,它会跳过 .gitignore 中列出的文件、隐藏文件和二进制文件,因此在代码项目中你只会看到有用的结果。ripgrep 由 Andrew Gallant 开发,采用 MIT 许可证和 Unlicense 双重许可。
ripgrep 在 Apple 芯片 Mac 和 Intel Mac 的“终端”中运行,可以通过 Homebrew(brew install ripgrep)或 MacPorts 安装。在其 GitHub 页面的性能测试中,它通常比 grep、git grep、The Silver Searcher 等同类工具更快,而且始终支持 Unicode。包括 Visual Studio Code 在内的许多代码编辑器都使用 ripgrep 进行搜索。
主要功能
ripgrep 用起来像 grep,但专为搜索代码而设计。
- 默认递归:搜索当前文件夹及其所有子文件夹。
- 自动过滤:跳过 .gitignore 中的条目、隐藏文件和二进制文件;用 rg -uuu 可关闭。
- 文件类型:只搜索某些类型的文件,例如用 rg -tpy 只搜 Python 文件,或排除某些类型。
- 熟悉的选项:上下文行、多个模式、彩色高亮匹配以及完整的 Unicode 支持。
- PCRE2:用 -P 切换到 PCRE2 正则引擎,支持环视和反向引用。
- 编码:可搜索 UTF-16、Latin-1、Shift_JIS 等其他文本编码。
- 压缩文件:用 -z 搜索 gzip、xz、bzip2、zstd 等压缩文件内部。
- 替换:根据匹配内容改写输出。
15.2.0 版本新功能
ripgrep 15.2.0 修复了多个与 gitignore 匹配相关的错误,并加快了大型文件夹的搜索速度。
- 在海量文件中遍历目录更快
- 遵循 GIT_CONFIG_GLOBAL 和 GIT_CONFIG_SYSTEM 设置
- 修复多个 gitignore 匹配错误
- 新增适用于 Arm 版 Linux(musl)的预编译程序
ripgrep 常见问题
ripgrep 免费吗?
是的。ripgrep 免费且开源,采用 MIT 许可证和 Unlicense 双重许可,你可以任选其一使用。
如何在 Mac 上安装 ripgrep?
如果使用 Homebrew,在“终端”中运行 brew install ripgrep;如果使用 MacPorts,运行 sudo port install ripgrep。GitHub 发布页面上还有适用于 Apple 芯片 Mac 和 Intel Mac 的预编译程序。
为什么 ripgrep 的命令叫 rg?
rg 只是 ripgrep 的简短命令名。例如,rg TODO 会在当前文件夹及其子文件夹中搜索 TODO 这个词。
为什么 ripgrep 在某些文件中找不到文本?
默认情况下,ripgrep 会跳过 .gitignore、.ignore 和 .rgignore 中列出的文件、隐藏文件和二进制文件。使用 rg -uuu 可以搜索所有内容。
如何用 ripgrep 只搜索特定类型的文件?
使用 -t 加类型名,例如 rg -tpy foo 只搜 Python 文件;用 -T 排除某种类型,例如 rg -Tjs foo。rg --type-list 会列出所有已知类型。
ripgrep 比 grep 快吗?
在 ripgrep GitHub 页面的性能测试中,它通常比 grep 和同类工具更快,尤其是在搜索代码文件夹时,而且始终支持 Unicode。
ripgrep 能完全取代 grep 吗?
对大多数搜索来说可以;ripgrep 具备 grep 的大部分功能。但它并不能直接替代所有依赖 grep 精确行为的脚本,这一点在其常见问题中有说明。
ripgrep 能搜索压缩文件吗?
能。加上 -z,ripgrep 就会搜索用 gzip、bzip2、xz、lz4、lzma、brotli 或 zstd 压缩的文件。
哪些代码编辑器使用 ripgrep?
不少编辑器都用 ripgrep 进行文件搜索。例如,Visual Studio Code 的“在文件中查找”就是由 ripgrep 驱动的。
ripgrep.FULLMAC.app 上的 ripgrep 下载来自哪里?
下载按钮指向 ripgrep 的官方 GitHub 页面 https://github.com/BurntSushi/ripgrep,那里有安装说明和各个版本。ripgrep.FULLMAC.app 不会修改或重新打包该工具。
相似应用
- tmuxtmux 是一款免费开源的终端复用器。它能让你在一个终端里运行多个程序,分成多个窗口和并排的窗格,并用键盘在它们之间切换。它最有用的功能是会话:从会话中分离后,里面的一切都会继续运行,即使你关闭终端或 SSH 连接中断也没关系;之后重新连接,就能从中断的地方继续。tmux 由 Nicholas Marriott 和其他贡献者开发,以 ISC 许可证发布。开发工具
VigilVigil 是一款免费开源的 Mac 原生终端,让编程智能体像团队一样协作。你不必再亲自在多个智能体窗口之间复制消息,只需把任务交给根节点的管理者智能体,它可以自行启动工作者智能体和子管理者。细节沿着树向下传递,结果以摘要形式返回给管理者,让管理者的上下文保持精简。实时节点树可以一次看到整个团队,每个节点都保留智能体自己的终端界面,你可以打开任意节点直接接手。开发工具
SwitchShuttleSwitchShuttle 是一款 Mac 菜单栏应用,让常用的终端命令只需一次点击或一个快捷键就能运行。你可以把命令整理到多级子菜单中,为每条命令设置全局快捷键和表情图标,然后在任何地方运行,无需先打开终端再输入。它支持 iTerm、Terminal、Warp、Alacritty、Hyper 等终端,每条命令都可以在当前窗口、新标签页或新窗口中运行。开发工具
tty7tty7 是一款用 Rust 编写的 GPU 渲染终端,基于 Zed 的 gpui 和 Alacritty 的终端核心构建。Shell 和窗格归后台服务器所有,而不是归窗口所有,因此即使退出应用,Shell 也会继续运行,无需 tmux。重启后,布局、屏幕内容和受支持代理的对话都会恢复。开发工具
TabbyTabby(原名 Terminus)是一款高度可配置的终端模拟器,同时也是 SSH、Telnet 和串口客户端。它一次替代多种工具:带标签页和分屏的本地终端、管理服务器的连接管理器,以及用于路由器、单片机等设备的串口终端。你的 SSH 密码和密钥可以保存在加密保险库中,可以通过 SSH 传输文件,还能用主题和插件改变外观和功能。Tabby 由 Eugene Pankov 开发,可在 Mac、Windows 和 Linux 上运行。开发工具
kittykitty 是一款快速、功能丰富的终端模拟器,用 GPU 绘制文字,滚动和大量输出都很流畅。它内置标签页和多种布局的分屏窗口,支持真彩色、连字和表情符号,还有自己的图形协议,可以直接在终端里显示图片。kitty 可以通过脚本和命令行控制,并能用称为 kitten 的小程序扩展,例如沿用你的设置进行 SSH 连接、并排比较文件和输入 Unicode 字符。kitty 由 calibre 的开发者 Kovid Goyal 制作。开发工具
FULLMAC.app 不托管此应用。下载按钮会将你带到开发者自己的页面。