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


76

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

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.