Hauptseite

Filter unter vim – externe Programme aus vim heraus ausführen

13. Mai 2009 von zimon

vim bietet mit dem Filterkommando ! die Möglichkeit externe Programme zu starten. Damit kann man seine Scripte direkt aus vim heraus testen oder mit Konsolenkommandos den Text manipulieren.

Externe Programme Ausfüren
Um das gerade geöffnete Script (was natürlich Ausführungsrechte besitzen muss) zu starten gibt man also folgenden Befehl ein, den man mit ENTER bestätigt:

:!./%

Die Variable % beinhaltet den aktuellen Dateinamen. Alternativ kann man natürlich auch andere Skripte starten oder den Dateinamen ausschreiben:

:!./script.pl

startet das Script script.pl im aktuellen Ordner.
Bei so gestarteten Programmen wird die Ausgabe des Programms angezeigt. Danach kommt man mit ENTER wieder zurück zu seinem Text. Man kann genausogut ganz gebräuchliche Kommandos wie ps, df, free oder ls ausführen und sich nur die Ausgabe ansehen, wenn man grad nicht die Konsole wechseln will oder kann.
Um die Ausgabe eines Kommandos in seinen Text zu übernehmen kann man das Kommando :r (für read) mit dem Filter kombinieren:

:r !free

fügt die Ausgabe von free in die Datei nach der aktuellen Zeile ein. Ein Quantifizierer kann dabei optional die Zeile angeben, hinter welche die Ausgabe eingefügt werden soll:

:4r !df -h

fügt die Ausgabe von df -h hinter die Zeile 4 ein.
Nebenbei bemerkt kann man mit dem read-Kommando auch komplette Dateien einfügen:

:r ~/.vimrc

fügt die Datei ~/.vimrc hinter die aktuelle Zeile in die Datei ein.

Text mit externen Programmen manipulieren
Um einen Text mit einem externen Kommando zu bearbeiten kann man z.B. im visuellen Modus einen Teil des Textes markieren und dann

:!sort

eingeben um die Zeilen alphabetisch zu sortieren.

Eine andere Möglichkeit ist ein Bewegungskommando mitzugeben, wodurch das externe Programm auf den Text von der aktuellen Cursorposition bis zum Ende der Bewegung ausgeführt wird. Dabei entfällt der Doppelpunkt:

!}sort

sortiert die Zeilen von der aktuellen Cursorposition bis zum Ende des Abschnitts.

Um den gesammten Text mit einem externen Programm zu bearbeiten gibt es die Bereichsangabe %. Das folgende Beispiel formatiert das komplette gerade geöffnete Perlscript mit perltidy:

:%!perltidy

Ansonsten können Bereiche auch durch ihre Zeilennummern angegeben werden. Im nächsten Beispiel werden die Zeilen 5 bis 10 sortiert:

:5,10!sort

Auch die Rechtschreibprüfung mit aspell nutzt Filter.
Praktisch kann auch die Kombination mit awk sein.

Weitere Informationen über Filter gibt es in der Hilfe, die man mit :h filter aufrufen kann.


Schlagworte: , ,



1 Kommentar zu „Filter unter vim – externe Programme aus vim heraus ausführen“

  1. [...] Filter unter vim – externe Programme aus vim heraus ausführen [...]

Kommentieren

Kommentarlinks könnten nofollow frei sein.


Bloggeramt.de frisch gebloggt Blogverzeichnis - Blog Verzeichnis bloggerei.de