rg 命令 #
rg(ripgrep)是一个用 Rust 语言编写的命令行文本搜索工具,它提供了与 grep 类似的功能,但速度更快,特别是在处理大型代码库时。ripgrep 会自动忽略 .gitignore 文件中指定的文件和目录,以及隐藏文件和二进制文件,从而提供更专注的搜索结果。
安装方法 #
macOS #
bash
# 使用 Homebrew 安装
brew install ripgrep
Linux #
bash
# Debian/Ubuntu 系统
sudo apt install ripgrep
# Fedora 系统
sudo dnf install ripgrep
# Arch Linux
sudo pacman -S ripgrep
# 从源码安装
git clone https://github.com/BurntSushi/ripgrep.git
cd ripgrep
cargo build --release
Windows #
- 使用 Chocolatey:
choco install ripgrep - 使用 Scoop:
scoop install ripgrep
基本使用 #
简单搜索 #
bash
# 在当前目录递归搜索 "pattern"
rg pattern
# 搜索指定目录
rg pattern /path/to/directory
# 搜索指定文件
rg pattern file.txt
基本选项 #
| 选项 | 说明 |
|---|---|
-i |
忽略大小写 |
-n |
显示行号 |
-c |
只显示匹配的行数 |
-v |
显示不匹配的行 |
-A NUM |
显示匹配行及其后 NUM 行 |
-B NUM |
显示匹配行及其前 NUM 行 |
-C NUM |
显示匹配行及其前后各 NUM 行 |
常用功能 #
文件类型过滤 #
bash
# 只搜索 Python 文件
rg pattern --type py
# 搜索 Python 和 JavaScript 文件
rg pattern --type py --type js
# 排除某种文件类型
rg pattern --type-not py
# 使用文件扩展名过滤
rg pattern -g "*.txt"
忽略规则 #
bash
# 不忽略 .gitignore 文件中指定的文件
rg pattern --no-ignore
# 不忽略隐藏文件
rg pattern --hidden
# 不跳过二进制文件
rg pattern --binary
正则表达式搜索 #
bash
# 匹配以 "pattern" 开头的行
rg ^pattern
# 匹配以 "pattern" 结尾的行
rg pattern$
# 匹配整个单词
rg -w word
# 启用 PCRE2 正则表达式引擎
rg -P "pattern.*with.*regex"
高级功能 #
预览匹配上下文 #
bash
# 使用 bat 预览匹配内容和上下文
rg pattern --preview "bat --color=always -n {}"
# 自定义预览窗口大小和位置
rg pattern --preview "cat {}" --preview-window=right:50%:wrap
多模式搜索 #
bash
# 搜索 "pattern1" 或 "pattern2"
rg -e pattern1 -e pattern2
# 使用或运算符
rg "pattern1|pattern2"
搜索结果处理 #
bash
# 只显示匹配的内容(不显示文件名和行号)
rg -o pattern
# 只显示匹配的文件路径
rg -l pattern
# 显示匹配的文件路径和行数
rg --count-matches pattern
使用示例 #
1. 搜索代码中的函数定义 #
bash
# 搜索 Python 函数定义
rg -n "def\s+\w+\s*\(" --type py
# 搜索 JavaScript 函数定义
rg -n "function\s+\w+\s*\(" --type js
2. 查找包含特定关键词的配置文件 #
bash
# 查找包含 "database" 的配置文件
rg -i "database" -g "*.conf" -g "*.ini" -g "*.yml"
3. 搜索并替换文本 #
bash
# 使用 sed 替换 rg 找到的内容
rg -l "old_text" | xargs sed -i "s/old_text/new_text/g"
4. 搜索并查看上下文 #
bash
# 查看匹配行及其前后各 5 行
rg -C 5 "error" log.txt
# 查看匹配行及其后 10 行
rg -A 10 "exception" app.log
5. 搜索大型代码库 #
bash
# 在项目中搜索 "TODO" 注释
rg "TODO:"
# 搜索所有 Python 文件中的 import 语句
rg -n "^import" --type py
与其他工具集成 #
与 fzf 结合使用 #
bash
# 使用 fzf 交互式选择 rg 搜索结果
rg --color=always pattern | fzf --ansi
与 Vim/Neovim 集成 #
可以使用 ripgrep.vim 插件在 Vim 中使用 rg:
vim
" 使用 vim-plug 安装
Plug 'BurntSushi/ripgrep', {'do': 'cargo install --force ripgrep'}
Plug 'jremmen/vim-ripgrep'
" 基本映射
nnoremap <leader>f :Rg<Space>
特点 #
- 高性能:使用 Rust 语言编写,速度比 grep、ack 和 silversearcher-ag 更快
- 智能过滤:自动忽略
.gitignore文件、隐藏文件和二进制文件 - 跨平台:支持 macOS、Linux 和 Windows
- 正则表达式支持:支持标准正则表达式和 PCRE2
- 颜色输出:提供彩色高亮的搜索结果,便于阅读
- 管道友好:可以与其他命令行工具无缝集成
- 文件类型识别:内置对多种编程语言文件的识别支持
ripgrep 是开发者和系统管理员的理想工具,特别适合在大型代码库中快速定位和搜索特定文本模式。
最后更新:2026-02-07