
# rg suderinamumas

`vendor/bin/rg` yra ripgrep stiliaus suderinamumo apvalkalas. Jis priima dažniausiai naudojamas ripgrep vėliavėles, naršo failų medį taip pat kaip ripgrep ir pateikia atitinkančią išvestį. Patikrintas funkcijų rinkinys atkurtas pagal patikras su pradine `rg` programa ir pateikiamas skiltyje [Išplėstinės funkcijos / funkcijų matrica](https://greph.inline0.dev/lt/docs/advanced/feature-matrix).

Apvalkalas yra plonas CLI transliatorius; pačią paiešką atlieka tas pats `Greph\Text\TextSearcher` variklis, kurį naudoja `vendor/bin/greph`.

## Kada naudoti

Naudokite apvalkalą, kai:

- Turite esamą įrankį, agentą arba scenarijų, kuris jau iškviečia `rg`.
- Norite tiesioginio pakaitalo, veikiančio aplinkose, kuriose negalite įdiegti paties ripgrep (bendrojo naudojimo priegloba, sustiprinto saugumo konteineriai, apribota PaaS).
- Norite ripgrep naudojimo patogumo infrastruktūroje, kurioje yra tik PHP.

Naudokite vietinį `vendor/bin/greph`, kai:

- Rašote naują kodą ir jums nereikia ripgrep CLI formos.
- Norite naudoti vietines vėliavėles, kurių apvalkalas nepateikia (pavyzdžiui, AST režimą).

## Naudojimas

```bash
rg [options] pattern [path...]
rg --files [options] [path...]
```

Paprasta iškvieta rekursyviai ieško `.`:

```bash
./vendor/bin/rg -F "function"
```

`--files` pateikia galimus failus, o ne atlieka paiešką:

```bash
./vendor/bin/rg --files
./vendor/bin/rg --files --type php
./vendor/bin/rg --files --hidden
```

## JSON išvestis

`--json` pateikia tą patį įvykiais paremtos struktūros duomenų rinkinį kaip ir ripgrep:

```bash
./vendor/bin/rg --json -F "function walk" src/Greph.php
```

```json
{"type":"begin","data":{"path":{"text":"src/Greph.php"}}}
{"type":"match","data":{"path":{"text":"src/Greph.php"},"lines":{"text":"    public static function walk(string|array $paths, ?WalkOptions $options = null): FileList\n"},"line_number":41,"absolute_offset":1034,"submatches":[{"match":{"text":"function walk"},"start":18,"end":31}]}}
{"type":"end","data":{"path":{"text":"src/Greph.php"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":0,"human":"0.000000s"},"searches":1,"searches_with_match":1,"bytes_searched":13383,"bytes_printed":282,"matched_lines":1,"matches":1}}}
{"type":"summary","data":{"elapsed_total":{"human":"0.000000s","nanos":0,"secs":0},"stats":{"bytes_printed":282,"bytes_searched":13383,"matched_lines":1,"matches":1,"searches":1,"searches_with_match":1,"elapsed":{"human":"0.000000s","nanos":0,"secs":0}}}}
```

`stats` objektuose trukmės visada nurodomos kaip nulis.

Tai schema, kurios tikisi tolesni įrankiai, kai įjungia struktūruotą ripgrep išvestį. Jei norite paprastesnės struktūros, naudokite `vendor/bin/greph --json`.

## Patikrintos funkcijos

Toliau pateiktos vėliavėlės patikrintos su pačiu `rg`, naudojant [funkcijų matricą](https://greph.inline0.dev/lt/docs/advanced/feature-matrix). Per kiekvieną patikrą pradinė programa ir apvalkalas pateikia lygiavertę išvestį. Jei vėliavėlė turi trumpą ir ilgą užrašymo formą, tikrinama viena forma, o apvalkalas abi formas apdoroja kaip tą pačią parinktį.

### Paieškos vėliavėlės

- `-F`, `--fixed-strings`
- `-i`, `--ignore-case`
- `-w`, `--word-regexp`
- `-v`, `--invert-match`
- `-c`, `--count`
- `-l`, `--files-with-matches`
- `--files-without-match`
- `-I`, `--no-filename`
- `-H`, `--with-filename`
- `-n`, `--line-number`
- `-A N`, `--after-context N`
- `-B N`, `--before-context N`
- `-C N`, `--context N`
- `-m N`, `--max-count N`
- `-e P`, `--regexp P`

### Failų naršymo vėliavėlės

- `-L`, `--follow`
- `--glob GLOB`
- `--type NAME`
- `--type-not NAME`
- `--no-ignore`
- `--hidden`
- `--files`
- `--files --hidden`
- `--files --type NAME`

### Išvesties vėliavėlės

- `--json`

### Priimamos be patikros

Apvalkalas taip pat priima šias vėliavėles, tačiau joms dar neatlikta funkcijų matricos patikra:

- `-j N`, `--threads N` (vykdytojų skaičius, žr. [Lygiagretūs vykdytojai](https://greph.inline0.dev/lt/docs/advanced/parallel))
- `-q`, `--quiet`
- `--no-follow`

## Apribojimai

Greph `rg` apvalkalas apima paieškos ir failų naršymo funkcijas, kurias naudoja dauguma įrankių ir agentų. Šiuo metu jame nėra šių ripgrep funkcijų:

- Kelių eilučių regex (`-U`, `--multiline`)
- Pakeitimas (`-r`, `--replace`) teksto režimu (vietoj to naudokite `vendor/bin/greph` AST perrašymą)
- Tinkintų tipų apibrėžtys (`--type-add`, `--type-clear`)
- Koduotės vėliavėlės (`-E`, `--encoding`)
- `--pre` filtravimo scenarijai
- `--sort`, `--sortr`

Jei trūksta vėliavėlės, pateikite problemos aprašą, pridėdami patikrą, kurią atlikote su pradine `rg`, ir laukiamą išvestį. Naujos funkcijos pateikiamos kartu su etaloninėmis patikromis, todėl patikrintų funkcijų rinkinys tik plečiasi.

## Elgsenos lygiavertiškumas

Apvalkalo tikslas – elgsenos, o ne baitų lygiavertiškumas. Eilučių lygmeniu išvestis sutampa, tačiau gali skirtis kosmetinės detalės (spalvų kodai, nukirpimas pagal terminalo plotį). Atliekant [funkcijų matricos](https://greph.inline0.dev/lt/docs/advanced/feature-matrix) patikras vertinamas semantinis, o ne tikslus baitų sutapimas.

Įrankiams ir agentams, kurie analizuoja išvestį, kiekvienos patikrintos pradinės `rg` programos atveju analizatoriui svarbūs laukai (failo kelias, eilutės numeris, turinys, atitikmens vieta) sutampa baitas į baitą.
