in vim, wie „args“ auf das Ergebnis eines „grep -l“ zu setzen?
-
06-07-2019 - |
Frage
Zur Veranschaulichung hier ist, wie es von der Kommandozeile zu tun:
vim `grep "hello" * -Rl`
Es öffnet sich vim mit allen Dateien, die „Hallo“ in ihnen (-l gibt die Dateinamen allein) haben. Ich will das Gleiche tun, sondern von innen vim. Konzeptionell, so etwas wie dies (was nicht funktioniert):
:args !grep "hello" * -Rl
Ich bin offen für ganz unterschiedliche Ansätze, dies zu erreichen; Ich würde so, wie es auf einer Linie zu sein (so ist es leicht zu bearbeiten und Redo).
Die Antwort ist einfach Backtick zu verwenden - aber mit einem Schlüssel Vorbehalt Die unten nicht für mich arbeiten, weil die Zitate um hello
:
:args `grep "hello" * -Rl`
Aber es funktioniert, wenn ich sie entfernen oder die Anführungszeichen entkommen:
:args `grep hello * -Rl`
:args `grep \"hello\" * -Rl`
(dies wurde in den Kommentaren nach Chaos' Antwort begraben - ich ihnen hier gegeben, um sie besser sichtbar zu machen, falls jemand dieses Problem hat)
Lösung
Nun, das funktioniert für mich:
:args `grep -Rl "hello" *`
Beim Laufen vim 7.0.305.
Andere Tipps
Versuchen Sie, den args
Befehl:
:ar[gs] `grep -Rl "hello" .`
Wenn die Backticks sind nicht für Sie arbeiten, sind Sie verwenden Sie verwenden eine aktuelle Version von vim?
:version