Wenn ich laufe grep "keyword" -n
und die folgende Ergebnisliste erhalte:
a/b/c:10: keyword
a/b/c:70: keyword
a/b/d:50: keyword
Wie kann ich eine der Dateien (z. B. die zweite in der Liste) in der gefundenen Zeile öffnen?
Ich kopiere jetzt einfach die Ausgabe mit meiner Maus und kopiere sie danach vim
und füge sie dann +
mit der Zeilennummer hinzu, die ich kopiere. (Das heißt, ich schreibe vim a/b/c +70
mit der Mauskopie, um den Dateinamen zu erhalten, und mit einer anderen Mauskopie, um die Zeilennummer zu erhalten [oder ich kopiere sie einfach von Hand, wenn sie kurz genug ist])
Gibt es eine Möglichkeit, dies mit einer Tastenkombination zu tun?
command-line
vim
grep
CIsForCookies
quelle
quelle
echo a/b/c:70: keyword | awk '{print $1}' | sed 's,:$,,' | sed 's,:, +,' | xargs vim && reset
.Antworten:
Zwei Dinge:
Vim hat Unterstützung für
grep
.Wenn Sie Vim öffnen und dies tun
:grep keyword ...
, füllt Vim die Quickfix-Liste mit den Ergebnissen und springt zur ersten Datei. Sie können dann mit (und anderen Befehlen) zum n- ten Quickfix-Eintrag springen:cc n
.Sie können die oben genannte Quickfix-Liste mit der Ausgabe von grep füllen:
Verwenden Sie dann die oben genannten Quickfix-Navigationsbefehle.
Beides ist einfacher als das manuelle Herumspielen mit der Ausgabe von grep.
Alternativ zu (2) können Sie die Ausgabe von grep in einer Datei speichern und stattdessen diese Datei verwenden, wenn Sie der Meinung sind, dass Sie Vim nicht unbedingt nachher öffnen müssen:
quelle
grep -n
(<filename>:<line>: ...
) haben. Ich benutze das flüchtige Plugin für Git und gehe dann:Gstatus
zur gewünschten Datei und drücke die Eingabetaste.grep alias
, dass immer Farben verwendet werden, und das hat aus irgendeinem Grund die-q >()
Option gebrochen ...Sie könnten dies tun, wenn es keine Unterstützung für grep gäbe, da @muru antwortete:
Es kann beispielsweise mit einem anderen Befehl verwendet werden
git grep
.Sie können die Ausgabe auch in einem Puffer öffnen und "cbuffer" darauf verwenden.
Siehe dazu den Quickfix- Abschnitt aus dem Handbuch.
quelle