| Vim | |
|---|---|
![]() Hintergrundbild mit Vim-Logo |
|
| Basisdaten | |
| Entwickler: | Bram Moolenaar und andere |
| Aktuelle Version: | 7.2 (9. August 2008) |
| Betriebssystem: | Windows, Linux, Mac OS, Amiga uvm. |
| Kategorie: | Texteditor |
| Lizenz: | GPL-kompatibel (Charityware) |
| Deutschsprachig: | ja |
| Website: | vim.org |
Vim (Vi IMproved) ist eine Weiterentwicklung des auf fast jedem Unix-System zu findenden Texteditors vi. Das freie Open-Source-Programm wurde 1991 von Bram Moolenaar veröffentlicht. Seitdem wird der Editor von ihm und vielen anderen weiter verbessert. Vim unterscheidet sich wie vi von den meisten anderen Editoren durch seine verschiedenen Betriebs-Modi, im Gegensatz zu den meisten heute gebräuchlichen Editoren, die nur einen kombinierten Eingabe- und Befehlsmodus kennen, in dem Befehle über Tastenkombination und grafische Oberflächen ausgeführt werden.
Inhaltsverzeichnis |
Vim funktioniert wie der vi-Editor im Textmodus auf jedem Terminal. Die Bedienung erfolgt dann ausschließlich über die Tastatur. Das ist historisch bedingt durch die zu Ur-vi-Zeiten Mitte der 1970er Jahre üblichen Bildschirmterminals mit einer langsamen, seriellen Verbindung zum Hauptrechner. Aus der Limitierung damaliger Terminals resultiert sein modales Konzept, das sich jedoch auch heute noch gut bewährt. 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 (gVim / kVim) sowie eine vereinfachte Version für Einsteiger (eVim). Auch die Benutzung der Maus wird unterstützt.
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 Vim über eine Verknüpfung oder einen Alias (hier: Kurzname für einen längeren UNIX-Befehl) aufgerufen. Welcher vi-Ableger gestartet wurde, lässt sich im Kommando-Modus über den Befehl ':version' überprüfen.
Anfang der 1970er Jahre war ed von Ken Thompson der Unix-Standardeditor. ed arbeitete zeilenorientiert, und die Anzeige des kompletten Textes erfolgte nicht wie heute gewohnt, sondern musste über explizite Ausgabebefehle angewiesen werden (da die Ausgabe häufig nicht auf einem Bildschirm, sondern einem Drucker erfolgte). Um mit den sehr begrenzten Möglichkeiten einer Zeile arbeiten zu können, war es notwendig, einen Editier- und einen Kommandomodus zu verwenden (modaler Editor).
Die ed-Kommandos bestanden normalerweise aus einem Buchstaben, dem ein Zeilenbereich vorangestellt werden konnte. Als Bill Joy ab 1976 vi entwickelte, stellte dieser einen wesentlichen Fortschritt dar, da er bildschirmorientiert arbeitete und Änderungen am editierten Text im Kontext darstellte. vi erbte dabei das modale Konzept und die kryptischen Befehle von ed. Deshalb finden sich diese Eigenheiten von vi noch heute in allen aktuellen vi-kompatiblen Editoren, wie auch in Vim, wieder.
Als Bram Moolenaar sich Ende der 1980er 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 von Vim. Dieser hieß zu der Zeit noch vi IMitation, da das Hauptziel zunächst darin bestand, die Funktionalität von vi nachzubilden. 1991 wurde 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 (improved, engl. für verbessert).
In den Jahren danach hat Vim große Verbesserungen erfahren. Ein Meilenstein war die Einführung der mehrfachen Editier-Fenster in der Version 3.0 (1994) (Bild 1). Mit vi konnte man zwar auch mehrere Dateien mit einem Aufruf editieren, aber man konnte immer nur eine Datei davon sehen und nicht mehrere gleichzeitig. Mit der Version 4.0, die 1996 erschien, war erstmals auch eine grafische 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 2a).
Als bisher letzter großer Schritt wurden 2001 mit der Version 6.0 Code-Faltung, Plug-ins, Unterstützung für Mehrsprachigkeit und vertikal aufgeteilte Fenster eingeführt (Bilder 2 bis 5). Die Version 6.4 (erschienen im Oktober 2005) behebt viele Fehler, fügt aber keine neuen Funktionen hinzu. Dies war Version 7.0 im Mai 2006 vorbehalten; sie verfügt über eine integrierte Rechtschreibprüfung und unterstützt Reiter (Tabs). Die wichtigste Prämisse der Vim-Entwickler war immer, dass Vim in erster Linie zum Editieren von Texten dient; dabei soll er den Benutzer so gut wie möglich unterstützen.
(Stand: Version 7.1, Mai 2007)
Die Leistungsfähigkeit von Vim soll an einigen markanten vi-Verbesserungen dargestellt werden.
Vim besitzt eine umfassende Dokumentation, die nach dem Motto erstellt wurde: „Ein Feature, das nicht dokumentiert ist, ist ein nutzloses Feature.“ Die Dokumentation im Textformat ist sehr umfangreich und verständlich geschrieben. Der Nutzer wird bei der Suche nach Lösungen zu seinem Problem durch verschiedene Funktionen unterstützt. Durch Syntaxhervorhebung 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 von 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.
Vim ist ein Editor, der von Programmierern für Programmierer geschrieben wurde. Um ihnen die Arbeit zu erleichtern, gibt es den Modus edit-compile-fix (deutsch „Editieren-Übersetzen-Fehlerkorrektur“). Ähnlich wie bei einer Integrierten Entwicklungsumgebung wird der Quelltext editiert und dann mittels eines Compilers direkt aus 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 gegebenenfalls weitere Fehler korrigiert werden. Der Programmierer wird dabei durch die Funktionen Syntaxhervorhebung und Textfaltung unterstützt.[1]
Eine weitere häufige Aufgabenstellung besteht im Vergleichen von zwei Versionen einer Datei. Vim bietet hier eine einfache Möglichkeit, die Unterschiede zweier Dateiversionen nebeneinander in zwei Fenstern darzustellen und die Differenzen farbig zu markieren (Bild 4), die typische Aufgabe eines Merge-Programmes. 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 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, falls sie im sogenannten Plug-in-Verzeichnis stehen, automatisch aufgerufen. Sie lassen sich über das ':source'-Kommando einlesen und ausführen. Ein Beispiel für ein 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 von Vim automatisch ausgeführt. In der Vim-Skriptsprache sind alle Kommandozeilen-Befehle verfügbar und über das Kommando ':normal' auch alle Normal-Modus-Befehle. Es gibt zwei Datentypen: Ganze Zahlen und Zeichenketten. Boolesche Werte werden über ganze Zahlen realisiert, wobei eine Null als falsch gewertet wird und alle anderen Zahlen als 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 verwenden, die im wesentlichen den Unix-Systemaufrufen entsprechen. Die Skripte können mit einem Debug-Modus getestet werden. Wer vorhat, ein Vim-Skript zu schreiben, sollte vorher auf der Vim-Skript-Seite[2] nachsehen, ob es nicht schon ein Skript mit der entsprechenden Funktionalität gibt. Obwohl es dort viele Skripte zur Unterstützung von Programmieraufgaben 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, sein Skript anderen zur Verfügung stellen. Als Beispiel für ein Vim-Skript soll das Kalender-Skript[3] dienen (Bild 5), das zum Beispiel bei Terminplanungen nützliche Dienste leistet. Es wird, falls es vorher ins Plug-in-Verzeichnis kopiert wurde, ganz einfach im Vim über den Befehl ':Calendar' aufgerufen.
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 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.[4]
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. Durch das zweifache Drücken der Escape-Taste gelangt man immer in den Normal-Modus zurück. Falls man sich nicht sicher ist, ob man sich bereits im Normal-Modus befindet, kann man jederzeit die Escape-Taste drücken. War man bereits im Normalmodus, wird dies im Normalfall, je nach Vim-Konfiguration und Terminal-Einstellungen, mit einem Piepton signalisiert.
Im Einfüge-Modus verändern Tastatureingaben den editierten Text, so wie man es von anderen Editoren kennt. Man erreicht diesen Modus 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 und die Existenz dieser Befehle ist keineswegs ein Luxus, sondern einer der Schlüssel zum effizienten Umgang mit Vi und Vim, wie man ihn bei Power-Usern beobachten kann.
Im Einfüge-Modus werden (fast) alle Tastatureingaben in den editierten Text übernommen, und nur ganz wenige ([CTRL/STRG]-) Tasten (-kombinationen) haben eine andere Wirkung. Die Wichtigste ist die Escape-Taste zur Beendigung des Einfüge-Modus. Anschließend sind die Normal-Modus-Befehle, die gerade die Effizienz des Vim ausmachen, wieder verfügbar.
(Eine weniger verbreitete, alternative Sichtweise verzichtet darauf, das Einfügen von Text als eigenständigen Modus zu betrachten. Gemäß dieser Sichtweise existieren lediglich eine Reihe von Textänderungs-Befehlen, denen unmittelbar eine Eingabe folgt, welche mit [ESC] abzuschließen ist. Ein Vorteil dieser Sichtweise ist, dass niemals Zweifel aufkommen, ob momentan der Normal-Modus gewählt ist, und auch das Potenzial der von Power-Usern sehr geschätzten Befehlswiederholung mit Punkt erschließt sich in dieser Sichtweise eher.)
Dieser Modus wird durch den einleitenden Doppelpunkt : erreicht. Hinter dem Doppelpunkt können dann komplexe Kommandos, wie beispielsweise zum 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 des Weiteren die Kommandos / (Textmuster vorwärts suchen), ? (Textmuster rückwärts suchen) und das Filter-Kommando !.
Dieser Modus ist eine Vi-Verbesserung und ähnelt dem Kommando-Modus. Mit der Maus oder bestimmten Tastenkürzeln wird ein Bereich zeilenweise, zeichenweise oder blockweise markiert und visuell hervorgehoben. Auf diesen Bereich können dann die Kommandos des Normal- sowie des Kommando-Modus angewandt werden. Die Arbeit mit diesem Modus ist einfacher als mit dem Normal-Modus, da man genau sieht, welchen Bereich man gerade bearbeitet.
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. Einfacher ist der Selektions-Modus über die Tasten-Kombination Shift-Pfeiltasten erreichbar, die vielen Windows-Nutzern aus den gängigen Windows-Programmen bekannt sein dürfte. Allerdings muss Vim dazu entsprechend konfiguriert werden. Beendet wird dieser Modus wie üblich mit der Escape-Taste. Auch dieser Modus ist eine Vim-Erweiterung.
Dieser Modus ähnelt dem Kommandozeilen-Modus, 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. In diesem Modus ahmt Vim (wie auch der traditionelle Vi Editor) den UNIX-Zeileneditor ex nach. Dieser Editor bearbeitete Text wegen der damaligen technischen Limitierungen zeilenweise anstatt wie heute seitenweise.
Ein Vorteil von Vim ist, dass er auf vielen Betriebssystemen lauffähig ist. Das ist für alle Nutzer wichtig die, wie zum Beispiel Systemadministratoren, auf mehreren Plattformen arbeiten müssen. Sie finden auf den folgenden Betriebssystemen (in Abhängigkeit von den jeweiligen Möglichkeiten) denselben Editor vor: AmigaOS, Atari MiNT, BeOS, DOS, GNU/Linux, Mac OS, NeXTStep, OS/2, OSF/1, RISC OS, IRIX, Unix (viele verschiedene, u. a. BSD, AIX und HP-UX), VMS, Win16 und Win32 (Windows 3.x/95/98/ME/2000/NT/XP/Vista).
Kritiker bemängeln an Vi und Vim vor allem, dass sich das grundlegende Konzept und insbesondere die Bedienung vollkommen von anderen heute üblichen Editoren unterscheidet. Am häufigsten wird die Trennung der verschiedenen Modi sowie die Notwendigkeit des Erlernens der zahlreichen Tastenkürzel kritisiert, ohne die ein effizientes Arbeiten nicht möglich ist. In der heutigen Zeit mag die anfangs wenig intuitive Bedienung als anachronistisch erscheinen und Gelegenheitsbenutzer werden den Umgang mit Vi und Vim sicher häufig als frustrierend empfinden. Erst mit einer längeren Einarbeitungszeit lässt sich dies in einen eventuellen Produktivitätsvorteil umkehren.
Oft wird der Editor auch aus praktischen Gründen eingesetzt, da er klein und schnell ist, für viele Plattformen zur Verfügung steht und da auf sehr vielen Rechnern mit UNIX-artigen Betriebssystemen eine Variante davon installiert ist.
Die meisten Benutzer, die auf Vi oder Vim zurückgreifen, schätzen diese Editoren aufgrund der höheren Produktivität, die sich im Vergleich zu einfachen Editoren nach Bewältigung der Lernkurve einstellt. Viele Tastaturbefehle müssen sich durch Eselsbrücken eingeprägt werden, auch wenn es sich meist um den Anfangsbuchstaben des entsprechenden Befehles in englischer Sprache handelt. Diese Eigenart geht, wie im historischen Exkurs erwähnt, auf das Konzept des ed zurück. Der wesentlich höhere Aufwand zum Erlernen dieser Befehle wird dabei bei sehr häufigen, intensiven Gebrauch durch ein effizienteres Arbeiten gerechtfertigt. Geübte Anwender können mit wenigen Tastatureingaben Text kopieren, formatieren oder sortieren, wobei Varianten möglich sind, die bei gängigen, einfacheren Editoren meist mit größerem Aufwand verbunden sind. Mit einem hinreichenden Überblick sind, durch die Kombination mehrerer Befehle, vor allem komplexere und wiederkehrende Textbearbeitungen mit Vim einfach zu erledigen. Darüber hinaus erlauben die grafischen Versionen zusätzlich eine eingeschränkte Bedienung über mit der Maus bedienbaren Menüs, was in Grenzen eine von gewöhnlichen Editoren her bekannte Arbeitsweise ermöglicht.
Vim war Gewinner des Readers’ Choice Awards[5] in der Kategorie Favorite Text Editor in den Jahren 2001 bis 2005 und erhielt 2000 den Slashdot Beanie Award als Best Open Source Text Editor sowie 1999 den Linuxworld Editors' Choice Award. Im Mai 2008 erhielt Bram Moolenaar für seine Arbeit an Vim den NLUUG Award, eine Auszeichnung der Niederländischen Unix User Group.[6]
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.[7]
Vim wird hauptsächlich von Bram Moolenaar und einer Community mit vielen Freiwilligen entwickelt. Die Vim-Hilfeseite der aktuellen Version nennt über 50 Mitwirkende namentlich.[8] 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-Scripts 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.
| Dieser Artikel wurde in die Liste der exzellenten Artikel aufgenommen. |