Μετάβαση στο περιεχόμενο

Συμβατότητα με το rg

Το vendor/bin/rg είναι ένα επίπεδο συμβατότητας τύπου ripgrep. Δέχεται τις συνηθέστερες σημαίες ripgrep, διασχίζει το δέντρο αρχείων όπως το ripgrep και παράγει αντίστοιχη έξοδο. Η επαληθευμένη επιφάνεια αναπαράγεται από δοκιμαστικές εκτελέσεις με το ανάντη εκτελέσιμο rg και βρίσκεται στην ενότητα Για προχωρημένους / Πίνακας δυνατοτήτων.

Το περιτύλιγμα είναι ένας λεπτός μεταφραστής CLI· την ίδια την αναζήτηση εκτελεί ο ίδιος μηχανισμός Greph\Text\TextSearcher που χρησιμοποιεί το vendor/bin/greph.

Πότε να το χρησιμοποιήσετε

Χρησιμοποιήστε το περιτύλιγμα όταν:

  • Έχετε ήδη κάποιο εργαλείο, πράκτορα ή σενάριο που καλεί το rg.
  • Θέλετε μια άμεση αντικατάσταση που λειτουργεί σε περιβάλλοντα όπου δεν μπορείτε να εγκαταστήσετε το ίδιο το ripgrep (κοινόχρηστη φιλοξενία, ενισχυμένα κοντέινερ, περιορισμένο PaaS).
  • Θέλετε την ευκολία χρήσης του ripgrep σε υποδομή μόνο με PHP.

Χρησιμοποιήστε το εγγενές vendor/bin/greph όταν:

  • Γράφετε νέο κώδικα και δεν χρειάζεστε τη μορφή ripgrep CLI.
  • Θέλετε πρόσβαση σε εγγενείς σημαίες που δεν παρέχει το περιτύλιγμα (για παράδειγμα, λειτουργία AST).

Χρήση

Κέλυφος
rg [options] pattern [path...]
rg --files [options] [path...]

Μια απλή κλήση αναζητά αναδρομικά στο .:

Κέλυφος
./vendor/bin/rg -F "function"

Το --files εμφανίζει υποψήφια αρχεία αντί να κάνει αναζήτηση:

Κέλυφος
./vendor/bin/rg --files
./vendor/bin/rg --files --type php
./vendor/bin/rg --files --hidden

Έξοδος JSON

Το --json παράγει το ίδιο φορτίο δεδομένων σε μορφή συμβάντων με το ripgrep:

Κέλυφος
./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 αναφέρονται πάντα ως μηδέν.

Αυτό είναι το σχήμα που αναμένουν τα εργαλεία που ακολουθούν, όταν ενεργοποιούν τη δομημένη έξοδο του ripgrep. Αν θέλετε απλούστερη μορφή, χρησιμοποιήστε το vendor/bin/greph --json.

Επαληθευμένη επιφάνεια

Οι ακόλουθες σημαίες έχουν επαληθευτεί απευθείας με το rg στον πίνακα δυνατοτήτων. Το ανάντη εκτελέσιμο και το περιτύλιγμα παράγουν ισοδύναμη έξοδο για κάθε δοκιμή. Όταν μια σημαία έχει σύντομη και πλήρη γραφή, η δοκιμή χρησιμοποιεί τη μία και το περιτύλιγμα αναλύει και τις δύο ως την ίδια επιλογή.

Σημαίες αναζήτησης

  • -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

Σημαίες διάσχισης

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

Σημαίες εξόδου

  • --json

Αποδεκτές χωρίς δοκιμή

Το περιτύλιγμα δέχεται επίσης τις εξής σημαίες, αλλά δεν καλύπτονται ακόμη από δοκιμή του πίνακα δυνατοτήτων:

Περιορισμοί

Το περιτύλιγμα rg του Greph καλύπτει τις λειτουργίες αναζήτησης και διάσχισης που χρησιμοποιούν τα περισσότερα εργαλεία και οι πράκτορες. Προς το παρόν δεν παρέχει τις εξής λειτουργίες ripgrep:

  • Κανονική έκφραση πολλών γραμμών (-U, --multiline)
  • Αντικατάσταση (-r, --replace) στη λειτουργία κειμένου (χρησιμοποιήστε αντ' αυτού την αναδιατύπωση AST vendor/bin/greph)
  • Προσαρμοσμένοι ορισμοί τύπων (--type-add, --type-clear)
  • Σημαίες κωδικοποίησης (-E, --encoding)
  • Σενάρια φίλτρων --pre
  • --sort, --sortr

Αν συναντήσετε σημαία που λείπει, αναφέρετε το πρόβλημα μαζί με τη δοκιμή που εκτελέσατε στο ανάντη rg και την αναμενόμενη έξοδο. Οι νέες λειτουργίες προστίθενται μαζί με τις δοκιμές αναφοράς τους, ώστε η επαληθευμένη επιφάνεια να διευρύνεται συνεχώς.

Ισοτιμία συμπεριφοράς

Το περιτύλιγμα επιδιώκει ισοτιμία συμπεριφοράς, όχι ισοτιμία byte. Η έξοδος είναι ισοδύναμη ανά γραμμή, αλλά μπορεί να διαφέρει σε αισθητικές λεπτομέρειες (κωδικοί χρωμάτων, περικοπή ανάλογα με το πλάτος του τερματικού). Οι δοκιμές του πίνακα δυνατοτήτων ελέγχουν τη σημασιολογική ισοδυναμία, όχι διαφορές σε επίπεδο byte.

Για πράκτορες και εργαλεία που αναλύουν την έξοδο, τα πεδία που αφορούν τον αναλυτή (διαδρομή αρχείου, αριθμός γραμμής, περιεχόμενο, θέση αντιστοίχισης) είναι πανομοιότυπα σε επίπεδο byte με το ανάντη rg για κάθε επαληθευμένη δοκιμή.