Zur Veranschaulichung hier ist, wie es von der Kommandozeile zu tun:in vim, wie man "args" auf das Ergebnis eines "grep -l" setzt?
vim `grep "hello" * -Rl`
Diese vim mit allen Dateien öffnen, die „Hallo“ in ihnen (-l gibt die Dateinamen allein) haben. Ich möchte dasselbe tun, aber von innen heraus. 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 möchte nur, dass es in einer Zeile ist (es ist also einfach zu bearbeiten und zu wiederholen).
Die Antwort ist einfach Backtick verwenden - aber mit einem Schlüssel Vorbehalt! unten ist das bei mir nicht funktioniert, weil der zitiert um hello
:
:args `grep "hello" * -Rl`
Aber es funktioniert, wenn ich sie entfernen oder die Zitate entkommen:
:args `grep hello * -Rl`
:args `grep \"hello\" * -Rl`
(dies in der begraben wurde, Kommentare nach Chaos 'Antwort - Ich habe sie hier hinzugefügt, um sie besser sichtbar zu machen, falls jemand anderes dieses Problem hatte)
danke, ich habe versucht, mit backticks, aber vim erkennt sie nicht - stattdessen interpretiert es "' grep "als ein dateiname. Hast du deine Antwort für dich arbeiten lassen? Wenn ja, frage ich mich, warum es nicht für mich funktioniert. – 13ren
Ja, hat gut für mich gearbeitet. Vielleicht eine Versionssache. Ich benutze 7.0.305. – chaos
hmmm,: Version gibt mir: VIM - Vi IMproved 7.0 (2006 7. Mai, kompiliert am 31.01.2007 18:15:57) Enthaltene Patches: 1-122 – 13ren