Introduction
# ripgrep (rg)
Fast, smart recursive search. Respects `.gitignore` by default.
## Quick Start
### Basic search ```bash # Search for "TODO" in current directory rg "TODO"
# Case-insensitive search rg -i "fixme"
# Search specific file types rg "error" -t py # Python files only rg "function" -t js # JavaScript files ```
### Common patterns ```bash # Whole word match rg -w "test"
# Show only filenames rg -l "pattern"
# Show with context (3 lines before/after) rg -C 3 "function"
# Count matches rg -c "import" ```
## Advanced Usage
### File type filtering ```bash # Multiple file types rg "error" -t py -t js
# Exclude file types rg "TODO" -T md -T txt
# List available types rg --type-list ```
### Search modifiers ```bash # Regex search rg "user_\d+"
# Fixed string (no regex) rg -F "function()"
# Multiline search rg -U "start.*end"
# Only show matches, not lines rg -o "https?://[^\s]+" ```
### Path filtering ```bash # Search specific directory rg "pattern" src/
# Glob patterns rg "error" -g "*.log" rg "test" -g "!*.min.js"
# Include hidden files rg "secret" --hidden
# Search all files (ignore .gitignore) rg "pattern" --no-ignore ```
## Replacement Operations
```bash # Preview replacements rg "old_name" --replace "new_name"
# Actually replace (requires extra tool like sd) rg "old_name" -l | xargs sed -i 's/old_name/new_name/g' ```
## Performance Tips
```bash # Parallel search (auto by default) rg "pattern" -j 8
# Skip large files rg "pattern" --max-filesize 10M
# Memory map files rg "pattern" --mmap ```
## Common Use Cases
**Find TODOs in code:** ```bash rg "TODO|FIXME|HACK" --type-add 'code:*.{rs,go,py,js,ts}' -t code ```
**Search in specific branches:** ```bash git show branch:file | rg "pattern" ```
**Find files containing multiple patterns:** ```bash rg "pattern1" | rg "pattern2" ```
**Search with context and color:** ```bash rg -C 2 --color always "error" | less -R ```
## Comparison to grep
- **Faster:** Typically 5-10x faster than grep - **Smarter:** Respects `.gitignore`, skips binary files - **Better defaults:** Recursive, colored output, line numbers - **Easier:** Simpler syntax for common tasks
## Tips
- `rg` is often faster than `grep -r` - Use `-t` for file type filtering instead of `--include` - Combine with other tools: `rg pattern -l | xargs tool` - Add custom types in `~/.ripgreprc` - Use `--stats` to see search performance
## Documentation
GitHub: https://github.com/BurntSushi/ripgrep User Guide: https://github.com/BurntSushi/ripgrep/blob/master/GUIDE.md