Wie man von Vim aus auf die Shell zugreift oder externe Befehle ausführt
Vim ist, wie Sie vielleicht schon wissen, ein funktionsreicher und leistungsstarker Editor. In diesem Tutorial werden wir uns darauf konzentrieren, wie Sie sowohl externe Befehle ausführen als auch auf die Shell aus dem Editorfenster heraus zugreifen können.
Externe Befehle in Vim ausführen
Manchmal ist es sinnvoll, externe Befehle aus dem Vim-Editorfenster heraus auszuführen. Betrachten Sie zum Beispiel eine Situation, in der – in der Sie eine Datei in Vim geöffnet, einige Änderungen vorgenommen und dann beim Versuch, diese Änderungen zu speichern, eine Fehlermeldung ausgegeben haben, dass Sie nicht über ausreichende Berechtigungen verfügen.
Wenn Sie die aktuelle vim-Sitzung beenden und die Datei erneut mit ausreichenden Rechten öffnen, gehen alle Änderungen, die Sie vorgenommen haben, verloren, so dass Sie in den meisten Fällen zustimmen werden, dass dies nicht möglich ist. Es sind Situationen wie diese, in denen die Möglichkeit, externe Befehle aus dem Editor heraus auszuführen, von Nutzen ist.
Wir werden später auf den obigen Anwendungsfall zurückkommen – case(**), aber im Moment wollen wir verstehen, wie Sie grundlegende Befehle aus vim heraus ausführen können.
Angenommen, Sie möchten beim Bearbeiten einer Datei die Anzahl der Zeilen, Wörter und Zeichen wissen, die die Datei enthält. Um dies zu tun, geben Sie im Befehlsmodus von Vim einfach Doppelpunkt (:) gefolgt von einem Knall (!) und schließlich den Befehl (‚wc‘ in diesem Fall) gefolgt von dem Dateinamen ein (verwenden Sie % für die aktuelle Datei).
:! wc %
Hier ist ein Beispiel:
Datei mit dem oben genannten Befehl zur Ausführung bereit:
und hier ist die Ausgabe auf dem Terminal:
Nachdem Sie die Ausgabe gesehen haben, drücken Sie die Eingabetaste und Sie werden zu Ihrer Vim-Sitzung zurückgebracht.
Diese Funktion kann sehr nützlich sein, wenn Sie z.B. einen Code oder ein Skript schreiben und schnell wissen wollen, ob der Code/Skript irgendwelche Kompilierungs- oder Syntaxfehler enthält oder nicht.
Weiter geht es, falls die Anforderung darin besteht, die Ausgabe zur Datei hinzuzufügen, verwenden Sie den Befehl ‚:read !‘. Hier ist ein Beispiel:
:read ! wc %
Der Befehl ‚read‘ fügt die Ausgabe des externen Befehls auf einer neuen Zeile unterhalb der aktuellen Zeile in die zu bearbeitende Datei ein. Wenn Sie möchten, können Sie auch eine bestimmte Zeilennummer angeben – die Ausgabe wird nach dieser bestimmten Zeile hinzugefügt.
Der folgende Befehl fügt beispielsweise die Ausgabe von’wc‘ nach der zweiten Zeile der Datei hinzu.
:2read ! wc %
Hinweis: Verwenden Sie ‚$‘, um nach der letzten Zeile einzufügen und ‚0‘, um vor der ersten Zeile einzufügen.
Nun, um auf den Anwendungsfall zurückzukommen, den wir am Anfang besprochen haben (**), hier ist der Befehl, der Ihnen hilft, die Datei zu speichern, ohne sie zuerst schließen zu müssen (was bedeutet, dass Sie keine nicht gespeicherten Änderungen verlieren) und sie dann mit, sagen wir, sudo zu öffnen.
:w ! sudo tee %
Access Shell in Vim
Neben der Ausführung einzelner Befehle können Sie sich auch in einer neu gestarteten Shell aus Vim heraus fallen lassen. Dazu müssen Sie lediglich den folgenden Befehl aus dem Editor ausführen:
:shell
oder
:sh
und geben Sie „exit“ ein, wenn Sie mit der Shellarbeit fertig sind – dies bringt Sie zurück in die Vim-Sitzung, von der aus Sie ursprünglich gegangen sind.
Fazit
Die Möglichkeit, externe Befehle aus Vim heraus auszuführen, ist ein wichtiges Feature, das in vielen Situationen nützlich sein kann (einige davon haben wir in diesem Tutorial erwähnt). Die Lernkurve für dieses Feature ist nicht steil, so dass sowohl Anfänger als auch erfahrene Anwender es nutzen können.
Benutzt du diese Funktion schon seit geraumer Zeit? Hast du etwas zu erzählen? Bitte hinterlasse deine Gedanken in den Kommentaren unten.