GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie man von Vim aus auf die Shell zugreift oder externe Befehle ausführt

Wie Sie vielleicht bereits wissen, ist Vim ein funktionsreicher und leistungsstarker Editor. Hier bei HowtoForge haben wir mehrere Tutorials zu Vim geschrieben, die seine grundlegende Verwendung, Plugins sowie einige andere nützliche Funktionen behandeln. Aber angesichts der vielen Funktionen, die Vim bietet, finden wir immer etwas Nützliches, das wir mit unserer Leserschaft teilen können.

In diesem Tutorial konzentrieren wir uns darauf, wie Sie externe Befehle ausführen und vom Editorfenster aus auf die Befehlszeilen-Shell zugreifen können.

But before we start doing that, it's worth mentioning that all the examples, commands, and instructions mentioned in this tutorial have been tested on Ubuntu 14.04, and the Vim version we've used is 7.4.

Externe Befehle in Vim ausführen

Manchmal möchten Sie vielleicht externe Befehle aus dem Vim-Editorfenster heraus ausführen. Stellen Sie sich beispielsweise eine Situation vor, in der Sie eine Datei in Vim geöffnet, einige Änderungen vorgenommen haben und dann beim Versuch, diese Änderungen zu speichern, Vim einen Fehler ausgibt, der besagt, dass Sie nicht über ausreichende Berechtigungen verfügen.

Wenn Sie nun die aktuelle vim-Sitzung verlassen und die Datei erneut mit ausreichenden Rechten öffnen, gehen alle von Ihnen vorgenommenen Änderungen verloren, sodass dies, wie Sie zustimmen werden, in den meisten Fällen keine Option ist. In Situationen wie diesen ist die Möglichkeit, externe Befehle aus dem Editor heraus auszuführen, praktisch.

Wir werden später auf den obigen Anwendungsfall zurückkommen(**), aber lassen Sie uns zunächst verstehen, wie Sie grundlegende Befehle innerhalb von vim ausführen können.

Angenommen, Sie möchten beim Bearbeiten einer Datei wissen, wie viele Zeilen, Wörter und Zeichen die Datei enthält. Geben Sie dazu im Befehlsmodus von Vim einfach einen Doppelpunkt (:) gefolgt von einem Knall (!) und schließlich den Befehl (in diesem Fall 'wc') gefolgt vom Dateinamen ein (verwenden Sie % für die aktuelle Datei).

:! wc %

Hier ist ein Beispiel:

Datei mit dem oben genannten Befehl, der zur Ausführung bereit ist:

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 praktisch sein, wenn Sie beispielsweise einen Code oder ein Skript schreiben und schnell wissen möchten, ob der Code/das Skript Kompilierzeit- oder Syntaxfehler enthält.

Falls die Ausgabe der Datei hinzugefügt werden soll, verwenden Sie das ':read !' Befehl. Hier ist ein Beispiel:

:read ! wc %

Der Befehl „read“ fügt die Ausgabe des externen Befehls in einer neuen Zeile unterhalb der aktuellen Zeile in die bearbeitete 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 '$' zum Einfügen nach der letzten Zeile und '0' zum Einfügen vor der ersten Zeile.

Nun, zurück zu dem Anwendungsfall, 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 nicht gespeicherte Änderungen verloren gehen) und sie dann zu öffnen, sagen wir , sudo.

:w ! sudo tee %

Auf Shell in Vim zugreifen

Zusätzlich zum Ausführen einzelner Befehle können Sie sich auch von Vim aus in eine neu gestartete Shell fallen lassen. Dazu müssen Sie lediglich den folgenden Befehl im Editor ausführen:

:shell

oder

:sh

und geben Sie 'exit' ein, wenn Sie mit der Shell-Arbeit fertig sind - dies bringt Sie zurück in die Vim-Sitzung, wo Sie sie ursprünglich verlassen haben.

Die zu beachtende Lücke

Während die Möglichkeit, auf eine Shell zuzugreifen, in der realen Welt definitiv ihren eigenen Nutzen hat, kann sie auch als Technik zur Eskalation von Berechtigungen verwendet werden. Wie wir in einem unserer früheren Tutorials (über sudoedit) erklärt haben, kann er, selbst wenn Sie einem Benutzer sudo-Zugriff gewähren, um nur eine Datei über Vim zu bearbeiten, mit dieser Technik eine neue Shell aus dem Editor heraus starten und ist dann in der Lage alles als 'root' oder superuser zu tun.

Die Fähigkeit, externe Befehle innerhalb von Vim auszuführen, ist eine wichtige Funktion, die sich in vielen Situationen als nützlich erweisen kann (einige davon haben wir in diesem Tutorial erwähnt). Die Lernkurve für diese Funktion ist nicht steil, sodass sowohl Anfänger als auch erfahrene Benutzer davon profitieren können.

Nutzen Sie diese Funktion schon seit geraumer Zeit? Haben Sie etwas zu teilen? Bitte hinterlassen Sie Ihre Gedanken in den Kommentaren unten.


Linux
  1. Linux – Wie führe ich einen Bootloader von Linux aus?

  2. Wie lösche ich die ersten N Zeilen einer ASCII-Datei mit Shell-Befehlen?

  3. Wie drucke ich von Vim nach PDF?

  4. So führen Sie Python-Skripte von der Shell aus

  5. Wie extrahiere ich einen einzelnen Byteblock aus einer Datei?

So führen Sie Shell-Skript als Systemd-Dienst in Linux aus

So führen Sie .sh-Dateibefehle auf einmal in Linux aus

Wie greife ich auf Flash-Dateien von Streaming-Websites zu?

Wie greife ich von Ubuntu auf Windows-Dateien zu?

Wie führe ich externe Shell-Befehle vom Laravel-Controller aus?

Wie entferne ich eine Zeichenfolge aus einer Datei über Shell-Skripte?