此页面提供了ripgrep的快速入门指南,涵盖了基本命令语法、常用标志和实用示例。有关ripgrep架构或高级功能的深入信息,请参阅架构或性能。
ripgrep命令的基本语法是
rg [OPTIONS] PATTERN [PATH...]
其中
PATTERN 是搜索模式(默认为正则表达式)[PATH...] 是可选的搜索路径(默认为当前目录)[OPTIONS] 是修改行为的命令行标志来源: README.md3-9 GUIDE.md26-32
在当前目录中搜索模式
rg fast
这将递归地搜索所有文件,遵循gitignore规则,并自动跳过隐藏文件/目录和二进制文件。
示例输出
README.md:75: faster than both. (N.B. It is not, strictly speaking, a "drop-in" replacement
README.md:88: color and full Unicode support. Unlike GNU grep, `ripgrep` stays fast while
README.md:119:### Is it really faster than everything else?
README.md:124:Summarizing, `ripgrep` is fast because:
README.md:129: optimizations to make searching very fast.
rg pattern path/to/file.txt
rg pattern src/
进行不区分大小写的搜索
rg -i fast
进行智能大小写搜索(除非模式包含大写字母,否则忽略大小写)
rg -S Fast
来源: GUIDE.md26-62 README.md51-61
来源: README.md116-135 GUIDE.md117-172
常用标志
| 标志 | 描述 |
|---|---|
-i, --ignore-case | 不区分大小写的搜索 |
-S, --smart-case | 智能大小写搜索(如果模式全为小写则忽略大小写) |
-F, --fixed-strings | 将模式视为字面字符串而非正则表达式 |
-w, --word-regexp | 仅匹配整个单词 |
-c, --count | 仅显示匹配行的计数 |
-A NUM, --after-context=NUM | 在每个匹配项后显示 NUM 行 |
-B NUM, --before-context=NUM | 在每个匹配项前显示 NUM 行 |
-C NUM, --context=NUM | 在每个匹配项前后显示 NUM 行 |
-h, --help | 显示帮助信息(使用--help查看更多详情) |
--hidden 或 -. | 搜索隐藏的文件和目录 |
-L, --follow | 跟随符号链接 |
-g, --glob | 包含/排除匹配 glob 模式的文件 |
-t, --type | 仅搜索指定类型的文件 |
-T, --type-not | 不搜索指定类型的文件 |
来源: GUIDE.md989-1023 README.md132-149
默认情况下,ripgrep 会自动跳过
.gitignore 文件.ignore 文件(优先级高于 .gitignore).rgignore 文件(优先级高于 .ignore)禁用过滤
--no-ignore:不遵循 ignore 文件--hidden 或 -.:搜索隐藏的文件和目录-a, --text:将二进制文件作为文本搜索-L, --follow:跟随符号链接标志-u, --unrestricted 是一个方便的快捷方式
-u:禁用 .gitignore 处理-uu:也搜索隐藏文件-uuu:也搜索二进制文件来源: GUIDE.md174-219 README.md3-6
ripgrep 默认使用正则表达式。一些常用模式
| 模式 | 匹配 |
|---|---|
fast | 包含“fast”的行 |
^fast | 以“fast”开头的行 |
fast$ | 以“fast”结尾的行 |
[Ff]ast | 包含“Fast”或“fast”的行 |
\bfast\b | 包含单词“fast”的行 |
fast\w+ | “fast”后跟单词字符(例如,“faster”) |
fast\s+\w+ | “fast”后跟空格和单词 |
进行字面字符串匹配(非正则表达式)
rg -F "string with * and +"
用于 PCRE2 功能,如查找和反向引用
rg -P '(\w+)\s+\1' # Find repeated words
来源: GUIDE.md74-115 FAQ.md202-245
rg pattern -t rust # Search only Rust files
rg pattern -T js # Exclude JavaScript files
查看所有可用文件类型
rg --type-list
rg --type-add 'web:*.{html,css,js}' -t web pattern
rg pattern -g '*.md' # Only search markdown files
rg pattern -g '!*.min.js' # Exclude minified JS files
来源: GUIDE.md258-422 README.md127-132
rg pattern -n # Show line numbers (default)
rg pattern -N # Don't show line numbers
rg pattern -C 2 # Show 2 lines of context around matches
rg pattern -c # Count matching lines per file
rg pattern -l # Only show filenames with matches
rg pattern -L # Only show filenames without matches
rg fast --replace FAST # Replace matches in the output
rg 'fast\s+(\w+)' -r 'fast-$1' # Use capture groups
rg pattern --sort path # Sort results by file path
来源: GUIDE.md440-539 FAQ.md153-171
使用-z/--search-zip搜索压缩文件
rg -z pattern archive.gz
支持的格式:gzip、bzip2、xz、lzma、lz4、brotli、zstd。
对于其他编码的文件
rg -E encoding pattern file
UTF-16 文件会自动检测
rg pattern utf16file.txt
来源: GUIDE.md629-711 README.md144-149 FAQ.md173-193
创建 ripgrep 配置文件以进行持久化设置
# ~/.ripgreprc
--smart-case
--follow
--hidden
--glob=!.git/*
--max-columns=150
设置环境变量以启用它
export RIPGREP_CONFIG_PATH=~/.ripgreprc
通过在命令行上指定标志来覆盖任何配置设置。
来源: GUIDE.md541-625 FAQ.md32-37
生成 shell 补全脚本
# For bash
rg --generate complete-bash > ~/.bash_completion.d/rg.bash
# For zsh
rg --generate complete-zsh > ~/.zsh-complete/_rg
# For fish
rg --generate complete-fish > ~/.config/fish/completions/rg.fish
# For PowerShell
rg --generate complete-powershell > _rg.ps1