Ripgrep-Pfadspezifizierer unter Ubuntu 20

Ripgrep-Pfadspezifizierer unter Ubuntu 20

Ich möchte benutzenAbonnierenauf meinem Ubuntu 20-Rechner. Ich habe es aus verschiedenen Repos installiert (passend, Schnappschuss, Fracht) und habe es sogar selbst gebaut, bin aber immer auf das gleiche Problem gestoßen:

Laut Handbuch sollte man einfach ausführen können

rg 'pattern'

und ripgrep sucht einfach rekursiv im aktuellen Arbeitsverzeichnis. Für mich scheint es jedoch immer auch einen Pfadspezifizierer zu erwarten, was sich daran zeigt, dass es keine Übereinstimmung findet, selbst wenn eine Datei mit dem Muster auf der obersten Ebene des aktuellen Verzeichnisses vorhanden ist.

Ripgrep funktioniert nur, wenn ich etwas mache wie:

rg 'pattern' *

Das wäre kein allzu großes Problem, aber ich beabsichtige, ripgrep in einem Vim-Add-On zu verwenden, das das Verhalten aus dem Handbuch erwartet. Die Frage ist also: Warum verhält sich ripgrep so seltsam und wie behebe ich das Verhalten?

Bearbeiten:

Wenn Sie den Befehl mit dem --debugFlag ausführen, erhalten Sie die folgende Ausgabe:

DEBUG|grep_regex::literal|grep-regex/src/literal.rs:59: literal prefixes detected: Literals { lits: [Complete(test)], limit_size: 250, limit_class: 10 }
DEBUG|globset|globset/src/lib.rs:435: built glob set; 0 literals, 0 basenames, 11 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
DEBUG|globset|globset/src/lib.rs:435: built glob set; 0 literals, 0 basenames, 11 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
DEBUG|globset|globset/src/lib.rs:435: built glob set; 0 literals, 0 basenames, 11 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
DEBUG|globset|globset/src/lib.rs:435: built glob set; 0 literals, 0 basenames, 11 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
DEBUG|globset|globset/src/lib.rs:430: glob converted to regex: Glob { glob: "**/*", re: "(?-u)^(?:/?|.*/)[^/]*$", opts: GlobOptions { case_insensitive: false, literal_separator: true, backslash_escape: true }, tokens: Tokens([RecursivePrefix, ZeroOrMore]) }
DEBUG|globset|globset/src/lib.rs:435: built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes
DEBUG|globset|globset/src/lib.rs:435: built glob set; 0 literals, 0 basenames, 11 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
DEBUG|ignore::walk|ignore/src/walk.rs:1639: ignoring ./.cache: Ignore(IgnoreMatch(Gitignore(Glob { from: Some("./.gitignore"), original: "*", actual: "**/*", is_whitelist: false, is_only_dir: false })))

...

und dann ist es dasselbe wie die letzte Zeile für jeden Unterordner meines Home-Verzeichnisses.

Antwort1

OK, also dank @Brian habe ich das Problem gelöst.

ripgrepverfügt über eine integrierte Ignorierlogik, die die in gefundenen Dateien automatisch ignoriert .gitignore.

Um meine Dotfiles über Git zu speichern, hatte ich in meinem Home-Verzeichnis ein Repository eingerichtet, das standardmäßig alle Dateien außer denen ignoriert, die ich mit hinzufüge git add -f .... D. h. in meiner .gitignoreDatei im Home-Verzeichnis ignoriere ich alle ( *)-Dateien, was wiederum dazu führte, dass ripgrep sie ebenfalls ignorierte. Ich glaube nicht, dass allzu viele das gleiche Problem haben werden, aber vielleicht hilft das irgendwann jemandem.

verwandte Informationen