Content Search

Search file contents with ripgrep-backed matching, syntax‑highlighted snippets, and caret markers.

Content Search

lla provides fast content search powered by ripgrep (rg). It shows syntax‑highlighted code snippets with line numbers and bright caret markers pointing to exact matches.

content search

Usage

# Search current directory (literal match by default)
lla --search "TODO"
 
# Search a specific directory
lla src/ --search "main()"
 
# Control context lines (default: 2)
lla --search "TODO" --search-context 5

Search Patterns

By default lla treats the pattern as a literal (safe for special characters). To use regex, prefix your pattern with regex:.

# Literal (default)
lla --search "main()"
 
# Regex (use regex: prefix)
lla --search "regex:^func.*\("

Search Options

Options supported by lla’s CLI for content search:

  • Context lines: --search-context <n> (applies symmetrically before/after, default 2)
  • Case sensitivity: --case-sensitive (default is case‑insensitive)
  • File/name filter: -f ".ext" or -f "glob:pattern" (mapped to ripgrep --glob)
  • Directory target: pass a directory as the first positional argument

Advanced Features

What you’ll see:

  • Syntax‑highlighted snippets based on file extension
  • Line numbers for each snippet line
  • Bright yellow carets marking exact match spans

Integration with lla Features

Content search honors your other lla settings:

  • Works with --filter, --files-only, etc. (eligible files are passed to ripgrep)
  • Respects configured exclude_paths
  • Honors dotfile visibility flags (--no-dotfiles, -A/--almost-all)

Practical Use Cases

Development Workflows

Finding API usage:

lla --search "regex:api\\.fetch\("
lla --search "regex:^use .*" -f ".rs"

Tracking TODOs and FIXMEs:

lla --search "regex:(TODO|FIXME|HACK):" --search-context 2

Finding dependencies:

lla --search "regex:^import.*from" -f "glob:*.{js,ts,jsx,tsx}"
lla --search "regex:^use " -f ".rs"

Code Review

Finding console logs:

lla --search "regex:console\\.(log|warn|error)" -f "glob:*.{js,ts,jsx,tsx}"

Checking error handling:

lla --search "regex:try\\s*\{|catch\\s*\(" --search-context 5

Finding deprecated code:

lla --search "@deprecated" --search-context 3

Configuration Management

Finding configuration keys:

lla --search "regex:api_key|secret|password" -f "glob:*.{toml,yaml,yml,json}"

Checking environment variables:

lla --search "process\.env\." -f "glob:*.{js,ts,jsx,tsx}"
lla --search "std::env::" -f ".rs"

Machine Output

For automation and tooling, lla passes through ripgrep’s JSON and also supports CSV:

# Ripgrep JSON events (pass-through)
lla --search "FIXME" --json
lla --search "TODO" --ndjson
 
# CSV (header: file,line,column,kind,text)
lla --search "TODO" --csv

Notes:

  • Literal matching is the default; use regex: to enable regex.
  • Some ripgrep CLI flags (e.g., --type, --before-context/--after-context) are not exposed directly; use -f for globs and --search-context for symmetric context.

Ignoring Files and Directories

lla honors .gitignore via its internal walker and your configured exclude_paths. Use --no-dotfiles/-A/--dotfiles-only to control hidden files.

Quick Reference

# Basics
lla --search "TODO"                      # Literal search
lla --search "regex:^func\("             # Regex search
lla --search "Error" --case-sensitive    # Case‑sensitive
lla --search "TODO" --search-context 3   # Context lines
 
# Scope
lla src/ --search "main"                 # Target directory
lla --search "Error" -f ".rs"           # Filter by extension
lla --search "import" -f "glob:*.{js,ts,jsx,tsx}"
 
# Machine output
lla --search "FIXME" --json
lla --search "TODO" --csv

Learn More