2009-06-23 5 views
10

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)

Antwort

8

Nun, das funktioniert für mich:

:args `grep -Rl "hello" *` 

Ausführung vim 7.0.305.

+0

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

+0

Ja, hat gut für mich gearbeitet. Vielleicht eine Versionssache. Ich benutze 7.0.305. – chaos

+0

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

3

Versuchen Sie, den args Befehl:

:ar[gs] `grep -Rl "hello" .` 

Wenn die Backticks nicht für Sie arbeiten, sind Sie verwenden Sie eine aktuelle Version von vim verwenden?

:version 
+0

danke, ich habe das versucht, aber "grep" ist interpretiert als ein Dateiname ... – 13ren

+0

Es ist Version 7, aber nicht die neueste.Ich bin auf der Suche nach einer neuen Version jetzt. – 13ren

+0

Ich habe gerade ein Upgrade auf Version 7.1.314, aber das gleiche Problem.Ich frage mich, was das Problem ist. – 13ren