In Vim möchte ich einen Text Zeile für Zeile scannen und den Inhalt an einen externen Shell-Befehl übergeben. Zum Beispiel habe ich eine Liste von Namen und will Hallo zu jedem Namen der Liste sagen. Was ich bereits geschafft habe, ist wie folgt.Übergabe des Arguments an einen vim "execute"
diesen Text Gegeben:
John Doe
Jane Doe
Baby Doe
ich diesen Befehl verwenden, kann nur den ersten Namen zu finden und den Token in einen Ersatz-Befehl wieder verwenden die Rückreferenzierung Syntax (\ 0 oder \ 1).
:%g/\w\+/ s//--\0--/
Dies ist die Ausgabe:
--John-- Doe
--Jane-- Doe
--Baby-- Doe
Was ich jetzt tun möchte, ist mein „Ersatz“ Befehl zu ändern, für „Ausführen“ Shell-Befehl.
Dieser Befehl
:% g/\ w \ +/exe "Welt"
funktioniert gut, aber wie es zu parametrieren "echo hallo!"?
Bisher habe ich versucht, dies:
:% g/\ w \ +/exe "echo hallo!" \ 0
und auch dies:
:% g/\ w \ +/exe "! echo Hallo" &
ohne Erfolg ...
Diese Frage hat viel Wert, da Sie dann von Vim einen Text mit einer Liste von Verzeichnissen scannen und sie im laufenden Betrieb erstellen können.
http: // vim .wikia.com/wiki/Power_of_g hat einige Beispiele. – bishop
Speziell dieser: http://vim.wikia.com/wiki/Redirect_g_search_output – dNitro