Wie führe ich Unix-Befehle in Vim aus?

76

Wie kann ich Unix-Befehle ausführen, während ich in vim bin?

Funk-meiden
quelle

Antworten:

102

In den Befehlsmodus wechseln Escund ausführen :!unix_command. Alles, was an der :Eingabeaufforderung mit einem Knall beginnt, !wird als Unix-Shell-Befehl ausgeführt. Ihnen wird die Ausgabe angezeigt und Sie können eine Taste drücken, um mit Ihrer Arbeit in vim fortzufahren.

Wenn Sie Text im visuellen Modus ausgewählt haben und ihn als STDIN an einen Befehl senden möchten, drücken Sie !!und geben Sie Ihren Befehl ein. Die Ergebnisse des Befehls ersetzen den ausgewählten Text.

Caleb
quelle
14
Auch !! ohne einen beliebigen Text ausgewählt werden Sie einen Befehl laufen lassen und dann das Ergebnis an der aktuellen Cursorposition ein - keine Notwendigkeit , Sachen zu STDIN zu senden und ersetzen , wenn Sie nicht wollen / müssen auf.
Kromey
4
Wenn Sie einfach die Ausgabe eines Befehls in Ihr Dokument einfügen möchten, tun Sie dies einfach :r!unix_command. Dies ist nützlich für Befehle wiedate
Yab
2
Sie können auch mehrere Zeilen Ihres vi-Puffers von der Shell (oder einem Interpreter) ausführen lassen und sie durch das Ergebnis der Ausführung ersetzen lassen. zB: :10,20!shoder, 'a,'b!sh
bilde
1
Noch etwas, das ich für erwähnenswert halte, ist die Tatsache, dass dies vom Betriebssystem abhängt, das Sie verwenden. Wenn Sie Windows verwenden, wird ein Windows-Shell-Befehl ausgeführt. Viele Leute, die dies lesen, werden es bereits wissen, aber für Leute, die von Google kommen, hielt ich es für erwähnenswert.
Andrew
25

Über einen VIM- Hilfespiegel:

:shell        :sh[ell]        start a shell
:!            :!{command}     execute {command} with a shell
Jay Elston
quelle