Vim
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/ |
Vim ist eine Weiterentwicklung des bildschirmorientierten Texteditors Vi, der als Standard-Editor auf jedem Unix-System zu finden ist. Vim ist im Gegensatz zum Vi ein Open-Source-Produkt und wurde 1991 von Bram Moolenaar erstmals veröffentlicht. Seitdem wird der Editor von ihm und vielen anderen weiter verbessert.
Vim bedeutet Vi IMproved
Vim funktioniert wie der Vi-Editor im Textmodus auf jedem Terminal. Die Bedienung kann ausschließlich über die Tastatur erfolgen. 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 modales 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 läuft auf vielen Betriebssystemen und ist auf fast jedem GNU/Linux-Rechner zu finden. Beim Start des Vi unter Linux wird oft über einen Link oder einen Alias der Vim aufgerufen. Welcher Vi-Ableger gestartet wurde, lässt sich im Kommando-Modus über den Befehl ':version' überprüfen. Trotz seines Funktions-Umfangs ist der Vim vergleichsweise klein und schnell.
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. Die Hilfe wird im Kommando-Modus über den Befehl
':help <optionaler_Suchbegriff>' aufgerufen. Dabei 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). Über Tasten-Kürzel kann zwischen diesen Schlüsselwörtern vorwärts (Strg-] bzw. entsprechend Strg-+ auf der deutschen Tastatur) und rückwärts (Strg-T oder Strg-O) 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). Ergänzt wird die Hilfe durch eine HTML-Version der 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 kompiliert. 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 Folding unterstützt (siehe ':help quickfix') [1].
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).
Der Aufruf ist: gvim -Od Datei.neu Datei.alt
Dabei werden geänderte und eingefügte Zeilen farbig hervorgehoben und gleich gebliebene Bereiche durch Folding 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 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. 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 [2] 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 [3] dienen (Bild 5), der zum Beispiel bei Terminplanungen nützliche Dienste leistet. Er wird, falls er vorher ins plugin-Verzeichnis kopiert wurde, ganz einfach ü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' [4].
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
Den Einfüge-Modus erreicht man vom Normal-Modus aus über i (für engl. insert = einfügen), a (wie append = hinter den Cursor anfügen) oder o (wie open = neue Zeile anfügen/öffnen). Es gibt noch eine Vielzahl anderer Befehle, um in diesen Modus zu gelangen. Hier kann man dann wie gewohnt Text editieren. 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
Geschichte
Jahr | Version | Bemerkung |
---|---|---|
1988 | 1.0 | Vi IMitation auf einem Amiga auf Basis von Stevie |
1991 | 1.14 | erstes öffentliches Release |
1992 | 1.22 | Portierung nach Unix, Umbenennung in Vi IMproved |
1994 | 3.0 | Mehrfache Editier-Fenster u.a. |
1996 | 4.0 | Grafisches Nutzer-Interface (gVim) |
1998 | 5.0 | Syntax-Highlighting |
2001 | 6.0 | Folding, Mehrsprachigkeit |
2004 | 6.3 | aktuelle Version |
ab 2004 | - | Version 7.0 ist in Arbeit |
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.
Historischer Exkurs
Anfang der 1970-er Jahren war der Ed von Ken Thompson der Unix-Standardeditor. (Zur Historie und den Konzepten des Ed siehe auch: Kernighan/Pike: Der Unix-Werkzeugkasten). Der Ed arbeitete zeilenorientiert und die Anzeige des kompletten Textes erfolgte nicht wie heute gewohnt, sondern mußte über explizite print-Befehle erfolgen. 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. Das modale Konzept und die kryptischen Befehle des Normal-Modus und des Kommandozeilen-Modus des Vi finden sich deshalb in allen aktuellen Vi-kompatiblen Editoren, wie auch im Vim, wieder.
Auszeichnungen
Vim war Gewinner des Readers’ Choice Awards im Linux Journal [5] 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 [6].
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
- Programmtests und Sammeln von Bugs
- die Vervollständigung der Dokumentation
- die Übersetzung der Hilfe-Seiten
- die Beantwortung von Nutzeranfragen
- die Einbindung in andere Projekte
- und viele andere Dinge
Außerdem kann jeder Nutzer auf der Vim-Homepage nützliche Vim-Skripte [2] oder hilfreiche Vim-Tips [7] 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
- [1] Hilfe zu 'quickfix'
- [2] Vim-Skript-Seite
- [3] Beispiel: Kalender-Skript
- [4] Vim-Hilfe zu den Modi
- [5] Linux Journal
- [6] Seite des ICCF Holland
- [7] Vim-Tips-Seite
Allgemeines und Link-Sammlungen
- Vim-Homepage (englisch)
- Vim-Seite von Bram Moolenaar (englisch)
- Link-Sammlung zu Vim-Seiten (englisch)
- eine weitere interessante Link-Sammlung (englisch)
- Vim-Ressourcen (Wiki, Tutorial, Beispiel-vimrc etc.) (englisch)
- CREAM: Eine einfache Vim-Konfiguration für Windows und GNU/Linux (englisch)
Dokumentationen
- Vim erklärt in 6 Kilobytes (nicht komplett übersetzt)
- Vim-Schnellübersicht
- Vim-Hilfe als HTML (englisch)
- Vim User Manual als HTML (englisch)
- Das Buch von Steve Oualline als PDF ca. 4 MB (englisch)
- VimDoc-Projekt - Dokumentationen zu Vim (englisch)
- Häufig gestellten Fragen (FAQ) (englisch)
- Vim-Makros erstellen
Mailing-Liste
<vim@vim.org> - siehe auch: Erklärung zur Mailing-Liste
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).