Vim
Vim (Vi IMproved) ist eine Weiterentwicklung des bildschirmorientierten Texteditors vi, der als Standard-Editor auf jedem Posix-kompatiblem Unix-System zu finden ist. Vim ist im Gegensatz zu vi ein Open Source-Programm, welches 1991 von Bram Moolenaar erstmals veröffentlicht worden war. Seitdem wird der Editor von ihm und vielen anderen weiter verbessert. Der Vim unterscheidet sich von den meisten anderen Editoren durch seine verschiedenen Eingabemodi.
Vim
| |
---|---|
![]() | |
![]() Wallpaper mit Vim-Logo | |
Basisdaten
| |
Entwickler | Bram Moolenaar und andere |
Erscheinungsjahr | 2. November 1991[1] |
Aktuelle Version | 6.3 (Juni 2004) |
Betriebssystem | Windows, Linux, Mac OS, Amiga uvm. |
Programmiersprache | C[2], Vimscript[2] |
Kategorie | Texteditor |
Lizenz | GPL-kompatibel charityware |
deutschsprachig | ja |
http://www.vim.org/ |
Vi IMproved
Vim funktioniert wie der Vi-Editor im Textmodus auf jedem Terminal. Die Bedienung erfolgt dann ausschließlich über die Tastatur. Das ist einerseits historisch bedingt durch die zu "Ur-Vi"-Zeiten Mitte der 70er Jahre üblichen Bildschirmterminals mit einer langsamen, seriellen Verbindung zum Hauptrechner. Andererseits läßt sich das auch durch sein modulares Konzept begründen. Vim ist fast zu 100% abwärtskompatibel zu Vi, hat jedoch eine Vielzahl an Verbesserungen und mittlerweile gibt es eine moderne, grafische Benutzerschnittstelle mit Menüs und Unterstützung der Maus (gVim) und eine vereinfachte Version für Einsteiger (eVim).
Vim kann auf vielen Betriebssystemen genutzt werden und ist auf fast jedem GNU/Linux-Rechner zu finden. In der Regel wird beim Aufruf vi unter Linux der Vim über einen Link oder einen Alias aufgerufen. Welcher Vi-Ableger gestartet wurde, lässt sich im Kommando-Modus über den Befehl ':version' überprüfen.
Geschichte
Historischer Exkurs zum Ed / Vi
Anfang der 1970-er Jahren war der ed von Ken Thompson der Unix-Standardeditor. Der ed arbeitete zeilenorientiert und die Anzeige des kompletten Textes erfolgte nicht wie heute gewohnt, sondern mußte über explizite print-Befehle gesteuert werden. Um mit den sehr begrenzten Möglichkeiten einer Zeile arbeiten zu können, war es notwendig, einen Editier-Modus und einen Kommando-Modus zu verwenden. Die ed-Kommandos bestanden normalerweise aus einem Buchstaben, dem ein Zeilenbereich vorangestellt werden konnte. Als ab 1976 Bill Joy den vi entwickelte, stellte dieser einen wesentlichen Fortschritt dar, da er bildschirmorientiert arbeitete und Änderungen am editierten Text im Kontext darstellte. Der vi erbte dabei das modale Konzept und die kryptischen Befehle des Ed. Deshalb finden sich diese Eigenheiten des vi noch heute in allen aktuellen vi-kompatiblen Editoren, wie auch im Vim, wieder.
Entwicklung des Vim
Als Bram Moolenaar sich Ende der 1980-er Jahre einen Amiga-Computer kaufte, wollte er gern den Editor benutzen, den er von Unix her kannte und gewohnt war. Allerdings gab es damals keinen Vi für den Amiga. So entwickelte er auf Basis des Vi-Klones Stevie 1988 die Version 1.0 des Vim. Dieser hieß zu der Zeit noch Vi IMitation, da das Hauptziel zunächst darin bestand, die Funktionalität des Vi nachzuempfinden. 1991 wurde der Vim mit Version 1.14 erstmals auf der sogenannten "Fred Fish disk #591", einer Sammlung freier Software für den Amiga, veröffentlicht. Die Version 1.22 wurde 1992 nach Unix und MS-DOS portiert. Zu dieser Zeit wurde die Langform der Abkürzung in Vi IMproved geändert. Die Großbuchstaben sollen dabei das Kürzel Vim erklären: VIM ist Vi IMproved.
In den Jahren danach hat der Vim große Verbesserungen erfahren. Ein Meilenstein war die Einführung der mehrfachen Editier-Fenster in der Version 3.0 (1994) (Bild 1). Mit dem Vi konnte man zwar auch mehrere Dateien editieren, aber man konnte immer nur eine Datei davon sehen und nicht mehrere untereinander. Mit der Version 4.0, die 1996 erschien, war erstmals auch eine graphische Benutzeroberfläche verfügbar, an der Robert Webb großen Anteil hatte. Seit 1998 beherrscht Vim (in der Version 5.0) Syntax Einfärbung (Bild 2).
Als bisher letzter großer Schritt wurden 2001 mit der Version 6.0. Text-Faltung, Plugins, Unterstützung für Mehrsprachigkeit und vertikal aufgeteilte Fenster eingeführt (Bilder 2 bis 5). Nach dem letzten Release 6.3 vom Juni 2004 sind einige Patches erschienen, die kleinere Fehler und Probleme korrigieren. Seitdem ist die Version 7.0 in Arbeit, die eine intergrierte Rechtschreibprüfung enthalten soll. Die wichtigste Prämisse der Vim-Entwickler war immer, dass der Vim in erster Linie zum Editeren von Texten dienen und den Benutzer dabei so gut wie möglich unterstützen soll.
Funktionalität
Überblick: Ausgewählte Features und Vi-Erweiterungen

- Multiple Buffer- und Split-Screens, mehrere Editier-Fenster, auch vertikal
- Text-Formatierungen und Visual Mode, zum Beispiel mit Blockoperationen
- unbegrenztes Undo (Rückgängig machen) und Redo (Wiederherstellen)
- umfangreiche Runtime-Dateien (Hilfe- und über 200 Syntax-Dateien)
- Syntax-Highlighting abhängig von der Programmiersprache
- eigene Skriptsprache zur Funktions-Erweiterung (analog zu Plugins)
- Komplettierung von Kommandos, Wörtern oder Dateinamen
- Auto-Kommandos (z.B. Dekomprimierung von gezippten Dateien vor dem Editieren)
- Dateiformat-Erkennung und -Konvertierung
- komfortabler History-Mechanismus für Kommandos, Suchbegriffe usw.
- Aufzeichnung und Ausführung von Makros
- Speichern und Laden von Sitzungs-Einstellungen
- optionale Integration von Perl, Tcl und Python
- Unterstützung der “Von-Rechts-Nach-Links”-Schreibung (Arabisch u.a.)
- Zusammenfalten von Textteilen zur besseren Übersicht
- Optionale grafische Oberfläche in verschiedenen Ausprägungen (GTK, Motif, ...)
- gut konfigurierbar und an persönliche Vorlieben anpassbar
- Für Vi-Puristen: fast 100%-ig Vi-kompatibel, aber ohne dessen Fehler
Die Leistungsfähigkeit des Vim soll an einigen markanten Vi-Verbesserungen dargestellt werden.
Vim-Hilfefunktion
Vim besitzt eine ausgezeichnete Dokumentation, die nach dem Motto erstellt wurde: "Ein Feature, das nicht dokumentiert ist, ist ein nutzloses Feature." Die Dokumentation im Textformat ist ca. 4 MB umfangreich und verständlich geschrieben. Beim Aufruf der Hilfe besteht manchmal das Problem, das Gesuchte zu finden. Der Nutzer wird bei der Suche durch verschiedene Funktionen unterstützt. Durch Syntax-Highlighting und eine eigene Vim-Help-Syntax werden Schlüsselbegriffe farbig hervorgehoben (Bild 1). Im Bild sind diese Begriffe grün dargestellt und werden in zwei senkrechte Striche eingeschlossen. Über Tasten-Kürzel kann zwischen diesen Schlüsselwörtern vorwärts und rückwärts navigiert werden, ähnlich wie in einem Webbrowser. Das funktioniert in der grafischen Oberfläche zusätzlich auch mit der Maus. Es gibt noch weitere Funktionen, die dem Nutzer das Suchen erleichtern. Eine wichtige davon ist das ':helpgrep'-Kommando. Dabei kann der Nutzer nach einem Begriff in der gesamten Hilfe suchen, die Treffer in einem weiteren Fenster darstellen lassen und von diesem dann zu den entsprechenden Stellen in der Hilfe wechseln (Bild 3). Die Trefferliste (Bild 3 unten) kann mit der Suchfunktion des Vim nach weiteren Begriffen durchsucht werden. Ergänzt wird die Hilfe durch eine HTML-Version dieser Hilfe im Internet, eine umfangreiche Sammlung der häufig gestellten Fragen (FAQ), Literatur in Englisch und in Deutsch und vieles mehr.
Unterstützung für Programmierer
Vim ist ein Editor, der von Programmierern für Programmierer geschrieben wurde. Um ihnen die Arbeit zu erleichtern, gibt es einen sogenannten "edit-compile-fix"-Modus, was etwa soviel wie: Editieren-Übersetzen-Fehlerkorrektur bedeutet. Ähnlich wie in einer Integrierten Entwicklungsumgebung wird der Quelltext editiert und dann mittels eines Compilers direkt aus dem Vim heraus übersetzt. Falls beim Kompilieren Fehler aufgetreten sind, werden diese in einem weiteren Fenster angezeigt. Von der Fehlermeldung kann direkt ins andere Fenster zur fehlerhaften Stelle im Quelltext gesprungen und dieser korrigiert werden. Danach kann ein weiterer Zyklus gestartet und es können ggf. neue Fehler korrigiert werden. Der Programmierer wird dabei durch die Funktionen Syntax-Highlighting und Text-Faltung unterstützt (siehe ':help quickfix')
Hilfreiche Funktion: Datei-Vergleich
Ein weiteres Problem, das wohl jeder Computerbenutzer kennt, ist das Vergleichen von zwei Versionen einer Datei. Vim bietet hier eine einfache Möglichkeit die Unterschiede zweier Datei-Versionen nebeneinander in zwei Fenstern darzustellen und die Differenzen farbig zu markieren (Bild 4). Dabei werden geänderte und eingefügte Zeilen farbig hervorgehoben und gleich gebliebene Bereiche durch Text-Faltung ausgeblendet. Im Beispiel sind geänderte Stellen rot und eingefügte Zeilen lila markiert. "Gefaltete" Zeilen sind hier grau unterlegt.
Vim-Skriptsprache
Vim ist über eine Skriptsprache erweiter- und programmierbar. Damit lassen sich komplexe Vorgänge automatisieren, die für ein Makro zu kompliziert wären. Vim-Skripte werden entweder beim Start über die Option '-s' oder automatisch, falls sie im sogenannten plugin-Verzeichnis stehen, aufgerufen. Im Vim lassen sie sich über das ':source'-Kommando einlesen und ausführen. Ein Beispiel für einen Vim-Skript ist die Vim-Start-Datei .vimrc unter Unix und GNU/Linux oder _vimrc unter Windows, in der hauptsächlich Konfigurations-Einstellungen vorgenommen werden. Diese wird beim Start des Vim automatisch ausgeführt. In der Vim-Skript-Sprache sind alle Kommandozeilen-Befehle verfügbar und über das Kommando ':normal' auch alle Normal-Modus-Befehle. Es gibt zwei Datentypen: Ganze Zahlen und Zeichenketten. Boolsche Werte werden über ganze Zahlen realisiert, wobei gilt: Null = FALSCH und Nicht-Null = WAHR. Es sind die wichtigsten Operatoren für Vergleiche, logische Verknüpfungen und Grundrechenarten vorhanden. Als Kontrollstrukturen stehen die Entscheidung 'if - then - elseif - else - endif' und die while-Schleife zur Verfügung. Der Nutzer kann eigene Funktionen definieren und über einhundert vordefinierte Funktionen, die im wesentlichen die Unix-Systemrufe sind, verwenden. Die Skripte können mit einem Debug-Modus getestet werden. Wer vor hat einen Vim-Skript zu schreiben, sollte vorher auf der Vim-Skript-Seite nachsehen, ob es einen Skript mit der entsprechenden Funktionalität nicht schon gibt. Obwohl es dort viele Skripte zur Unterstützung von Programmier-Aufgaben gibt, lohnt sich auch für Nicht-Programmierer ein Blick auf diese Seite. Nicht zuletzt kann jeder Nutzer, der ein Problem von allgemeinem Interesse gut gelöst hat, seinen Skript anderen zur Verfügung stellen. Als Beispiel für ein Vim-Skript soll der Kalender-Skript dienen (Bild 5), der zum Beispiel bei Terminplanungen nützliche Dienste leistet. Er wird, falls er vorher ins plugin-Verzeichnis kopiert wurde, ganz einfach im Vim über den Befehl ':Calendar' aufgerufen.
Modi
Vim ist ein modaler Editor. Dies bedeutet, dass man in unterschiedlichen Modi arbeitet, was Einsteigern oft Probleme bereitet. Um zu sehen, in welchem Modus man sich gerade befindet, sollte man die showmode-Option setzen. Die sechs Grund-Modi sollen hier nur genannt und kurz erklärt werden. Zu den ersten drei Modi siehe auch Vi-Arbeitsmodi. Auf die fünf zusätzlichen Modi soll hier der Einfachheit halber nicht eingegangen werden. Diese sind Varianten der Grund-Modi. Siehe dazu die Vim-Hilfe ':help vim-modes'.
Normal-Modus
Vim startet im Normal-Modus, oft auch als Kommando- oder Befehls-Modus bezeichnet. Hier kann man über Tastenkürzel zum Beispiel Zeilen kopieren und verschieben oder Text formatieren. Dies ist der zentrale Modus, von dem in alle anderen Modi gewechselt wird.
Einfüge-Modus
Der Einfüge-Modus ist der eigentliche Editier-Modus, so wie er auch bei anderen Editoren üblich ist. Man erreicht ihn vom Normal-Modus aus zum Beispiel über i (für engl. insert = einfügen). Es gibt eine Vielzahl anderer Befehle, um in diesen Modus zu gelangen. Im Einfüge-Modus kann man wie gewohnt Text editieren. Der eVim startet bereits von vornherein in diesem Modus. Allerdings sind dann die Normal-Modus-Befehle nicht ohne Weiteres verfügbar, die gerade die Effizienz des Vim ausmachen. In den Normal-Modus kommt man über die ESC-Taste zurück.
Kommandozeilen-Modus
Dieser Modus wird durch den einleitenden Doppelpunkt : erreicht. Hinter dem Doppelpunkt können dann komplexe Kommandos, wie zum Beispiel Suchen und Ersetzen, eingegeben werden. Nach dem abschließenden Enter wird der Befehl ausgeführt und man befindet sich wieder im Normal-Modus. Zu diesem Modus zählen weiterhin die Kommandos / (Textmuster vorwärts suchen), ? (Textmuster rückwärts suchen) und das Filter-Kommando !.
Visual-Modus
Dieser Modus ist eine Vi-Verbesserung und ähnelt dem Kommando-Modus. Über ein Kürzel wird ein Bereich, zum Beispiel Zeilen (mit V) oder Blöcke (mit Strg-V) und mit den Pfeiltasten markiert und visuell hervorgehoben. Auf diesen Bereich können dann die Kommandos des Normal-Modus angewandt werden. Die Arbeit mit diesem Modus ist einfacher als mit dem Normal-Modus, da man genau sieht, mit welchem Bereich man gerade arbeitet.
Selektions-Modus
Dieser Modus wird aus dem Visual-Modus gestartet in welchem man einen Bereich markiert. Anschließend wechselt man über Strg-G in den Selektions-Modus. Gibt man nun ein druckbares Zeichen ein, so wird der selektierte Bereich gelöscht und gleichzeitig in den Einfüge-Modus gewechselt. Das heißt, der selektierte Bereich wird mit dem eingegebenen Text überschrieben. Beendet wird dieser Modus wie üblich mit der ESC-Taste. Auch dieser Modes ist eine Vi-Erweiterung.
Ex-Modus
Dieser Modus ähnelt dem Kommandozeilen-Modus, nur mit dem Unterschied, dass nach Ausführung eines Kommandos nicht in den Normal-Modus zurück gewechselt wird. Erreicht wird dieser Modus über das Q und beendet mit vi.
Betriebssysteme
Ein Vorteil des Vim ist, dass er auf vielen Betriebssystemen lauffähig ist. Das ist für alle Nutzer, wie zum Beispiel für Systemadministratoren, wichtig, die auf mehreren Plattformen arbeiten müssen. Denn sie finden auf allen folgenden (in Abhängigkeit von den Fähigkeiten des Betriebssystems) ein und denselben Editor vor:
AmigaOS, Atari MiNT, BeOS, DOS, Mac OS, NextStep, OS/2, OSF, RiscOS, SGI, UNIX, VMS, Win16 + Win32 (Windows 95/98/00/NT/XP) - und vor allem für BSD-Systeme und GNU/Linux
Kritik und Apologetik
Kritik
Kritiker bemängeln an Editoren wie Vi und Vim die lange Einarbeitungszeit und dass sich die Bedienung vollkommen von allen üblichen Editoren unterscheide. Oft wisse man nicht, in welchem Modus man sich befinde und die vielen kryptischen Tastenkürzel könne sich kein Mensch merken. Das sei oft frustrierend und für die heutige Zeit anachronistisch. Deshalb sei der Vi und Vim besonders für Gelegenheitsbenutzer wenig geeignet.
Apologetik
Befürworter halten dem entgegen, dass man mit Vi oder Vim nach der Einarbeitungszeit eine im Vergleich zu anderen Editoren teilweise höhere Produktivität an den Tag lege. Die Befehle seien über Eselsbrücken recht einprägsam und mit wenigen Tastatureingaben könne man Text zum Beispiel Kopieren, Formatieren oder Sortieren, was so mit anderen Editoren nicht möglich sei. Vim sei zwar ausschließlich über die Tastatur bedienbar, aber in der grafischen Version sei ebenso eine Arbeitsweise mit Menüs und Maus möglich. Vim sei außerdem klein und schnell, stehe auf vielen Plattformen zur Verfügung und eigne sich damit ideal zum Beispiel zur Bearbeitung von Konfigurations-Dateien.
Um sinnvoll mit Vim arbeiten zu können, muss man als erstes sein modales Konzept verstanden haben. Mit einem Basis-Satz von einigen wenigen Normal-Modus-Befehlen ist Vim bedienbar. Um wirklich effektiv und möglicherweise auch produktiver als mit anderen Editoren arbeiten zu können, muss man eine größere Anzahl an Tastenkürzeln auswendig kennen und im Umgang mit diesen eine gewisse Übung erlangt haben.
Auszeichnungen
Vim war Gewinner des Readers’ Choice Awards im Linux Journal in der Kategorie „Favorite Text Editor“ in den Jahren 2001 bis 2004 und erhielt 2000 den Slashdot Beanie Award als „Best Open Source Text Editor“ sowie 1999 den Linuxworld Editors' Choice Award.
Lizenz
Vim steht unter einer GPL-kompatiblen Charityware-Lizenz (charity, engl.: Nächstenliebe). Das bedeutet, dass Vim frei verteilt werden darf, jedoch erbitten die Entwickler bei Gefallen eine Spende für Waisenkinder in Uganda durch das ICCF Holland.
Entwickler und Community
Vim wird hauptsächlich von Bram Moolenaar und vielen Freiwilligen entwickelt. Die Vim-Hilfeseite (':help credits') der aktuellen Version nennt über 50 Mitwirkende namentlich. Es gibt eine große Anzahl ungenannter Helfer, die sich nicht nur um die Weiterentwicklung des Vim kümmern, sondern auch um die Portierung auf andere Betriebssysteme, um Programmtests und das Sammeln von Bugs, die Vervollständigung der Dokumentation und die Übersetzung der Hilfe-Seiten. Außerdem übernehmen sie die Beantwortung von Nutzeranfragen, die Einbindung des Vim in andere Projekte und viele andere Dinge.
Jeder Nutzer kann auf der Vim-Homepage nützliche Vim-Skripte oder hilfreiche Vim-Tips anderen zur Verfügung stellen. Es gibt eine sehr aktive Mailingliste, auf der sowohl Neulinge als auch erfahrene Vim-Nutzer Fragen stellen können. Diese werden schnell und kompetent beantwortet.
Literatur
- Reinhard Wobst: vim ge-packt, mitp-Verlag, ISBN 3-8266-1425-9
- Steve Oualline: Vi IMproved - Vim, Verlag “New Riders”, ISBN 0-7357-1001-5 (englisch)
Weblinks
Allgemeines und Link-Sammlungen
- Vim-Homepage (englisch)
- Vim-Seite von Bram Moolenaar (englisch)
- Vim-Ressourcen (Wiki, Tutorial, Beispiel-vimrc etc.) (englisch)
Dokumentationen
- Vim-Schnellübersicht (PDF, ca. 100 kB)
- Vim-Hilfe als HTML (englisch)
- Das Buch von Steve Oualline als PDF ca. 4 MB (englisch)
Trivia
Weniger bekannt sein dürfte, dass Vim eigentlich ein Putzmittel ist. Genaueres siehe Vim-Webseite unter Weird stuff.
- ↑ arstechnica.com.
- ↑ a b www.openhub.net. (abgerufen am 21. Juli 2018).