rg code search

Expert knowledge for using rg (ripgrep) as a blazingly fast code search tool with powerful filtering and pattern matching.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "rg code search" with this command: npx skills add laurigates/claude-plugins/laurigates-claude-plugins-rg-code-search

rg Code Search

Expert knowledge for using rg (ripgrep) as a blazingly fast code search tool with powerful filtering and pattern matching.

Core Expertise

ripgrep Advantages

  • Extremely fast (written in Rust)

  • Respects .gitignore automatically

  • Smart case-insensitive search

  • Recursive by default

  • Colorized output

  • Multi-line search support

  • Replace functionality

Basic Usage

Simple Search

Basic search

rg pattern # Search in current directory rg "import numpy" # Search for exact phrase rg function_name # Search for function name

Case-sensitive search

rg -s Pattern # Force case-sensitive rg -i PATTERN # Force case-insensitive

File Type Filtering

Search specific file types

rg pattern -t py # Python files only rg pattern -t rs # Rust files only rg pattern -t js # JavaScript files rg pattern -t md # Markdown files

Multiple types

rg pattern -t py -t rs # Python and Rust

List available types

rg --type-list # Show all known types

Extension Filtering

Filter by extension

rg pattern -g '.rs' # Rust files rg pattern -g '.{js,ts}' # JavaScript and TypeScript rg pattern -g '!*.min.js' # Exclude minified files

Advanced Patterns

Regular Expressions

Word boundaries

rg '\bfunction\b' # Match whole word "function" rg '\btest_\w+' # Words starting with test_

Line anchors

rg '^import' # Lines starting with import rg 'return$' # Lines ending with return rg '^class \w+:' # Python class definitions

Character classes

rg 'TODO|FIXME|XXX' # Find markers rg '[Ee]rror' # Error or error rg '\d{3}-\d{4}' # Phone numbers

Multi-line Search

Multi-line patterns

rg -U 'fn.{.}' # Function definitions (Rust) rg -U 'struct.{[^}]}' # Struct definitions

Context lines

rg -A 5 pattern # Show 5 lines after rg -B 3 pattern # Show 3 lines before rg -C 2 pattern # Show 2 lines before and after

Output Formatting

Control output

rg -l pattern # List files with matches only rg -c pattern # Count matches per file rg --count-matches pattern # Total match count

Show context

rg -n pattern # Show line numbers (default) rg -N pattern # Don't show line numbers rg --heading pattern # Group by file (default) rg --no-heading pattern # Don't group by file

Customize output

rg --vimgrep pattern # Vim-compatible format rg --json pattern # JSON output

Advanced Filtering

Path Filtering

Search in specific directories

rg pattern src/ # Only src/ directory rg pattern src/ tests/ # Multiple directories

Exclude paths

rg pattern -g '!target/' # Exclude target/ rg pattern -g '!{dist,build,node_modules}/' # Exclude multiple

Full path matching

rg pattern -g '/test/' # Only test directories

Content Filtering

Search only in files containing pattern

rg --files-with-matches "import.*React" | xargs rg "useState"

Exclude files by content

rg pattern --type-not markdown

Search only uncommitted files

rg pattern $(git diff --name-only)

Size and Hidden Files

Include hidden files

rg pattern -u # Include hidden rg pattern -uu # Include hidden + .gitignore'd rg pattern -uuu # Unrestricted: everything

Exclude by size

rg pattern --max-filesize 1M # Skip files over 1MB

Code Search Patterns

Finding Definitions

Function definitions

rg '^def \w+(' # Python functions rg 'fn \w+(' # Rust functions rg '^function \w+(' # JavaScript functions rg '^\s*class \w+' # Class definitions

Interface/type definitions

rg '^interface \w+' # TypeScript interfaces rg '^type \w+ =' # Type aliases rg '^struct \w+' # Struct definitions (Rust/Go)

Finding Usage

Find function calls

rg 'functionName(' # Direct calls rg '.methodName(' # Method calls

Find imports

rg '^import.*module_name' # Python imports rg '^use.crate_name' # Rust uses rg "^import.'package'" # JavaScript imports

Code Quality Checks

Find TODOs and FIXMEs

rg 'TODO|FIXME|XXX|HACK' # Find all markers rg -t py '#\sTODO' # Python TODOs rg -t rs '//\sTODO' # Rust TODOs

Find debug statements

rg 'console.log' # JavaScript rg 'println!' # Rust rg 'print(' # Python

Find security issues

rg 'password.=|api_key.=' # Potential secrets rg 'eval(' # Eval usage rg 'exec(' # Exec usage

Testing Patterns

Find tests

rg '^def test_' -t py # Python tests rg '#[test]' -t rs # Rust tests rg "describe(|it(" -t js # JavaScript tests

Find skipped tests

rg '@skip|@pytest.mark.skip' -t py rg '#[ignore]' -t rs rg 'test.skip|it.skip' -t js

File Operations

Search and Replace

Preview replacements

rg pattern --replace replacement

Perform replacement (requires external tool)

rg pattern -l | xargs sed -i 's/pattern/replacement/g'

With confirmation (using fd and interactive)

fd -e rs | xargs rg pattern --files-with-matches | xargs -I {} sh -c 'vim -c "%s/pattern/replacement/gc" -c "wq" {}'

Integration with Other Tools

Pipe to other commands

rg -l "TODO" | xargs wc -l # Count lines with TODOs rg "function" --files-with-matches | xargs nvim # Open files in editor

Combine with fd (prefer fd's native -x execution)

fd -e py -x rg "class.*Test" {} # Find test classes fd -e rs -x rg "unsafe" {} # Find unsafe blocks

Count occurrences

rg -c pattern | awk -F: '{sum+=$2} END {print sum}'

Stats and Analysis

Count total matches

rg pattern --count-matches --no-filename | awk '{sum+=$1} END {print sum}'

Find most common matches

rg pattern -o | sort | uniq -c | sort -rn

Files with most matches

rg pattern -c | sort -t: -k2 -rn | head -10

Performance Optimization

Speed Tips

Limit search

rg pattern --max-depth 3 # Limit directory depth rg pattern -g '*.rs' -t rust # Use type filters

Parallel processing (default)

rg pattern -j 4 # Use 4 threads

Memory management

rg pattern --mmap # Use memory maps (faster) rg pattern --no-mmap # Don't use memory maps

Large Codebase Strategies

Narrow scope first

rg pattern src/ # Specific directory rg pattern -t py -g '!test*' # Specific type, exclude tests

Use file list caching

rg --files > /tmp/files.txt rg pattern $(cat /tmp/files.txt)

Exclude large directories

rg pattern -g '!{target,node_modules,dist,build}/'

Best Practices

When to Use rg

  • Searching code for patterns

  • Finding function/class definitions

  • Code analysis and auditing

  • Refactoring support

  • Security scanning

When to Use grep Instead

  • POSIX compatibility required

  • Simple one-off searches

  • Piped input (stdin)

  • System administration tasks

Tips for Effective Searches

  • Escape regex special characters in patterns

  • Use -u flags when searching ignored/hidden files

  • Exclude large binary/generated files with --glob '!vendor'

  • Prefer rg over grep for speed and smart defaults

Quick Reference

Essential Options

Option Purpose Example

-t TYPE

File type filter rg -t py pattern

-g GLOB

Glob pattern rg -g '*.rs' pattern

-i

Case-insensitive rg -i pattern

-s

Case-sensitive rg -s Pattern

-w

Match whole words rg -w word

-l

Files with matches rg -l pattern

-c

Count per file rg -c pattern

-A N

Lines after rg -A 5 pattern

-B N

Lines before rg -B 3 pattern

-C N

Context lines rg -C 2 pattern

-U

Multi-line rg -U 'pattern.*'

-u

Include hidden rg -u pattern

--replace

Replace text rg pattern --replace new

File Types (Common)

Type Extensions

-t py

Python (.py, .pyi)

-t rs

Rust (.rs)

-t js

JavaScript (.js, .jsx)

-t ts

TypeScript (.ts, .tsx)

-t go

Go (.go)

-t md

Markdown (.md, .markdown)

-t yaml

YAML (.yaml, .yml)

-t json

JSON (.json)

Common Command Patterns

Find function definitions across codebase

rg '^\s*(def|fn|function)\s+\w+' -t py -t rs -t js

Find all imports

rg '^(import|use|require)' -t py -t rs -t js

Find potential bugs

rg 'TODO|FIXME|XXX|HACK|BUG'

Find test files and count tests

rg -t py '^def test_' -c

Find large functions (50+ lines)

rg -U 'def \w+.\n(.\n){50,}' -t py

Security audit

rg 'password|api_key|secret|token' -i -g '!*.{lock,log}'

This makes rg the preferred tool for fast, powerful code search in development workflows.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

python-code-quality

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

python-development

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

python-testing

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

clippy-advanced

No summary provided by upstream source.

Repository SourceNeeds Review