Ich möchte den normalen M-x rgrep
-Workflow verwenden (Eingabe eines Pfades, eines Musters und Anzeige der verknüpften Ergebnisse in einem *grep*
-Puffer), aber mit git grep
anstelle des normalen find
-Befehls:
Ich habe versucht, die Variable grep-find-command
direkt zu setzen:
und mit grep-apply-setting
aber keiner scheint zu funktionieren. Wenn ich M-x rgrep
starte, wird nur der gleiche find
-Befehl verwendet wie zuvor.
Tatsächlich bin ich mir ziemlich sicher, dass rgrep
nicht einmal die Variable grep-find-command
benutzt, aber ich kann nicht herausfinden, wo der Befehl gespeichert ist
Was ist mit M-x vc-git-grep
( C-x v f
)? Tut das nicht, was Sie brauchen?
Es fordert Sie auf:
Funktioniert gut für mich.
(obwohl ich das gesagt habe, bemerke ich jetzt, dass ich die Funktion beraten musste, damit sie Farben richtig macht. Es gibt vielleicht einen besseren Weg, dies zu tun:
%Vor%)
Stellt sich heraus, dass die relevante Variable tatsächlich grep-find-template
ist. Dies nimmt einen Befehl mit einigen zusätzlichen Parametern:
<D>
für das Basisverzeichnis <X>
für die Suchoptionen zum Beschränken der Verzeichnisliste <F>
für die Suchoptionen, um die übereinstimmenden Dateien zu begrenzen <C>
für den Ort, an dem -i
eingefügt werden soll, wenn bei der Suche die Groß- und Kleinschreibung nicht beachtet wird. <R>
für den regulären Ausdruck, nach dem Die Standardvorlage sieht folgendermaßen aus:
%Vor% Damit der Befehl mit git grep
funktioniert, musste ich einige Optionen übergeben, um sicherzustellen, dass git
keinen Pager verwendet und die Objekte im richtigen Format ausgibt. Ich habe auch ein paar der Vorlagenoptionen ignoriert, weil git grep
bereits die gesuchten Dateien auf natürliche Weise einschränkt. Es macht jedoch wahrscheinlich Sinn, sie irgendwie wieder hinzuzufügen.
Mein neuer Wert für grep-find-template
ist
Nach einigen oberflächlichen Tests scheint es zu funktionieren.
Beachten Sie, dass Sie diese Variable mit grep-apply-setting
setzen und nicht direkt ändern sollten:
Da ich nicht zwei der Eingänge zu rgrep
verwende, habe ich meinen eigenen Befehl git-grep
geschrieben, der vorübergehend die alte grep-find-template
speichert und sie durch meine ersetzt. Das fühlt sich ein bisschen hacky an, scheint aber auch zu funktionieren.