
Vim ist ein Texteditor, der zum Programmieren gemacht wurde und darüber hinaus auch für jede andere Art von Texterarbeitung eingesetzt werden kann. Der Vi ist ein Klassiker unter den Texteditoren und der ursprüngliche "Hauseditor" auf allen Unix Systemen.
Vim
steht für Vi improved und ist die erweiterte und quell-offene Fassung des ursprünglichen Vi.
Vim ist eines der ersten "open source" Projekte überhaupt. Es gibt ihn mittlerweile seit rund 30 Jahren, das Original - Vi - ist nochmal knapp 20 Jahre älter.
Wir betrachten hier nur den Vi Improved und nennen ihn Vi.
Erscheinungsbild
Bei der normalen Arbeit mit dem Vi bietet sich folgendes Bild.

Der Vi läuft hier als Programm in einem Terminal. Die Farben kommen heutzutage als Voreinstellung.
Es gibt auch eine GUI Variante, die hat Menüs und kennt die Maus. Um die GUI zu starten gibt man am Terminal

In der GVim Variante gibt es eine Benutzerführung via Menü und Unterstützung der Maus, die allerdings nicht kompatibel zu unseren sonstigen Gewohnheiten ist.
Einrichtung
Installation
In allen mir bekannten GNU/Linux Distributionen ist Vim enthalten. Allerdings wird manchmal nur eine abgespeckte Version direkt installiert. Die komplette Installation muss man in dem Fall mit dem entsprechenden Paketmanager nachholen.
Die GUI Variante GVim wird in der Regel nicht automatisch installiert. Sollte also der Befehl
$ gvimnicht funktionieren, muss nachinstalliert werden. In den mir bekannten Debian Derivaten heißt das Paket vim-gtk3, bei Fedora heißt es einfach gvim.
Konfiguration
Die Konfiguration des Vi erfolgt durch set Befehle, die im laufenden Betrieb im "Datei" Modus eingegeben, oder mit gleicher Syntax in Konfigurationsdateien abgespeichert werden können. Vi kommt mit einer an sich brauchbaren Vorkonfiguration, so dass man das meiste, so wie es ist, übernehmen kann.
Will man zum Beispiel die Tabulatorweite setzen, gibt man im Vi : set tabstop=4 ein, wobei der : in den "Datei" Modus schaltet und den Cursor in die unterste Zeile bringt, in der man dann den Befehl absetzt.
Konfigurationen, die man so vorgenommen hat, gelten nur für die aktuelle Session und gehen beim Schließen des Programms verloren.
Will man den Vi für sich persönliche konfigurieren, erfolgt das in der Datei .vimrc im $HOME Verzeichnis. Diese Datei ist normalerweise nicht da. Es ist wichtig, dass man, wenn man sie anlegt, die übergeordnete Konfigurationsdateien, die für die schon existierenden Einstellungen sorgen, mit einbindet, sonst verliert man die Standardwerte.
Beispiel: Inhalt einer .vimrc Datei
source /usr/share/vim/vim82/defaults.vim
set tabstop=4 "Tab als vier Spalten darstellen
set wrap "Zeilenumbruch
set linebreak "verhindert Umbruch in einem Wort
set breakindent "Umbruch am Einzug ausrichten
In diesem Beispiel liegt die Vim Installation im Standardverzeichnis /usr/share/vim/vim82, die Standardkonfiguration ist die Datei defaults.vim. Die set
Befehle setzen einen Parameter und die " Zeichen leiten einen Kommentar ein.
Merkmale
Das wesentliche Merkmal des Vim ist, dass man den Editor nur mit der Tastatur ohne Sondertasten komplett bedienen kann.
Man braucht also keine Maus. Man braucht auch keine Funktionstasten. Man braucht auch keine Strg, Cmd oder Alt Taste. Man braucht noch nicht einmal die Pfeiltasten, auch nicht die Bild rauf und runter, etc. Tasten. Der moderne Vi hat zwar mittlerweile auch Funktionen, die man über Strg + irgendwas erreichen kann, die sind aber eher speziell.
Das macht den Umgang mit dem Teil, hmm, sperrig? Zumindest für die meisten Menschen ungewohnt.
Uralt, sperrig, ungewohnt.... Warum sich also damit herumschlagen? Kein Grund ! ?
Tatsache ist, dass andere, moderne Editoren wie z.B. Kate, Sublime-Text oder VSCodium einen Vi-Modus haben.
Es heißt, der Vi hätte eine anfangs sehr flache Lernkurve, also viel Arbeit und wenig Ergebnis. Das ist in meinen Augen nicht richtig. Zu Lernen ist da nämlich nicht viel, ein paar Tasten auf die man drücken muss. Aber umstellen muss man sich gewaltig und das ist oft schwieriger als lernen.
Wenn man das einmal getan hat, gehen Dinge plötzlich doppelt so schnell und kosten halb so viel Konzentration. Man merkt es selber erst, wenn man wieder mit einem anderen Editor arbeitet.
Eine wirklich gute - und kurze - Doku ist der Spickzettel zur Vim Tastaturbelegung der von einer Firma erstellt wurde, die Vi Emulationen für Microsoft Visual Studio und XCode gebaut hat.
Ausgehend von der Seite kommt man auch auf weiterführende Links, die von den Autoren gut ausgewählt sind. Das Netz ist ansonsten voll von Doku - oder Möchtegern-Doku - zum Vi.
Aufruf und Steuerung
Der Vi wird auf der Kommandozeile meist mit dem Namen einer Datei aufgerufen.
vi dateinameDarüber hinaus gibt es ca. 42 weitere Parameter, die als Argument übergeben werden können. Wer sich ein Bild machen möchte, kann sich die Liste mit
vi -helpanzeigen lassen.
Interessant sind vielleicht noch folgende Möglichkeiten:
- Einen Ordnernamen beim Start als Argument übergeben. Das erzeugt im Vi eine Liste mit Dateien indem Ordner, von denen man eine auswählen kann.
- Eine Dateiliste als Argument übergeben. Alle Dateien können dann der Reihe nach mit : n abgearbeitet werden.
Wird der Vi ohne Datei aufgerufen, kann man eine Datei im Ex-Modus mit :e dateiname laden.
Der Editor wird verlassen mit :q, oder :q! wenn Änderungen existieren, die verworfen werden sollen.
Das Schreiben von Änderungen erfolgt über :w und Schreiben und Schließen wird mit :wq erreicht.
Steuerung: Wellenbrecher für die ersten Schritte
Für die allerersten Schritte ist es wichtig zu wissen, dass der Vi drei Modi kennt:
- "Eingabe" - Modus,
- "Kommando" - Modus
- "Ex" oder Datei - Modus
und: Nach dem Start ist man im "Kommando" - Modus.!
Modus
- Kommandomodus:
- Normaler Modus im Vi.
Eingegebene Zeichen werden als Kommandos interpretiert.
Einschalten durch ESC. - Eingabemodus
- Normaler Modus in anderen Editoren.
Eingegebene Zeichen werden in den Text geschrieben.
Einschalten durch z.B. i,a,s ... im Kommandomodus
Verlassen durch ESC. - Ex- oder Dateimodus
- Kommandos für die ganze Datei (Speichern, Suchen & Ersetzen ...)
In der untersten Zeile werden vordefinierte Kommandos eingegeben.
Einschalten durch : im Kommandomodus.
Verlassen durch ESC oder ENTER
Übergänge
- Kommandomodus -> ("i" "a" "s" etc.) ---> Eingabemodus -> (ESC) ---> Kommandomodus
- Kommandomodus -> (":") ---> Ex-Modus -> (ENTER oder ESC) ---> Kommandomodus
Beispiel
An einem kleinen Beispiel soll die Art des Umgangs mit dem Vi gezeigt werden.
In der Datei unten soll ein Absatz in der Liste mit dem darunter liegenden Eintrag vertauscht werden. In der Liste soll erst der Eingabe- und danach den Kommandomodus beschrieben werden.
Hier haben wir die Ausgangssituation:

Als erstes zur Sicherheit ESC drücken, um zu garantieren, dass man im Kommandomodus ist. Nach ESC ist man immer im Kommandomodus.
Jetzt kommt: (Die Zeichen so, wie dort stehen, hinter einander eintippen und dabei am Besten gar nicht auf den Bildschirm schauen.)
4dd3jpDanach sieht die Datei folgendermaßen aus:

Erklärung für 4dd3jp
dd steht für: "Zeile löschen" (und in den Puffer kopieren).
j steht für: "Zeile runter".
p steht für: "Puffer einfügen" (hinter der aktuellen Zeile).
4 bzw. 3 sind Wiederholungsangaben für das darauf folgende Kommando.
Der Vi hat folgendes gemacht:
Lösche 4 Zeilen ab Cursor und kopiere sie in den Puffer. Bewege danach den Cursor 3 Zeilen nach unten und füge den Puffer unterhalb des Cursors ein.
Suchen und Ersetzen
Suchen und Ersetzen ist im Vi etwas eigenwillig - wer hätte es gedacht - aber extrem mächtig implementiert. Die gesamte Bandbreite an Möglichkeiten kann hier nur angerissen werden.
Suchen
Eine Suche wird im Kommando Modus durch die Eingabe von / gestartet.

Nach der Eingaben des Suchtextes wird die Suche mit Enter gestartet. Die Taste n springt zum nächsten, die Taste Shift+n zum vorherigen Vorkommen.
Bei dieser Art von Suche werden automatisch reguläre Ausdrücke im Suchtext interpretiert.
Will man Groß- und Kleinschreibung ignorieren, kann man dem Suchtext ein \c hintenan stellen
Eine Suche nach ganzen Worten startet man, indem der gesuchte Begriff mit \< und \> eingeklammert wird. Eleganter geht es, wenn man das aktuelle Wort unter dem Cursor sucht. Dann reicht der Tastendruck auf die * Taste, um die Suche nach diesem Wort zu starten.
Suchen und Ersetzen
Will man Text ersetzen, so kann man einmal auf der Suchen Funktion aufsetzen, durch die Ergebnisse blättern und die Ersetzung von Fall zu Fall vornehmen.
Die eigentliche Ersetzung wir beim ersten Treffer einmalig manuell durchgeführt. Bei den folgenden Treffern wird die Ersetzung durch Eingabe von . (Punkt) wiederholt.
Der andere Ansatz ist, die eingebauten Ex
Funktionen zu benutzen. Dieses Verfahren ist angebracht, wenn viele Stellen umgebaut werden müssen.

In dem Beispiel soll - sinnloserweise - jedes Vorkommen von color
im Dokument groß geschrieben werden.
Der Doppelpunkt am Anfang ist der Prompt im Ex-Modus. Der erste Teil des Kommandos - 1,$ - beschreibt den Bereich: Von der ersten bis zur letzten Zeile.
Das s bedeutet substitute
. Danach kommen, durch das Trennzeichen / abgesetzt, der zu suchende und der zu ersetzende Text. Das g am Ende steht für global
und bedeutet: jedes Vorkommen in einer Zeile.
Wenn man die Ersetzung gemacht hat, kann man das Ganze mit dem Buchstaben u (undo) im Kommandomodus wieder ungeschehen machen
Sprachunterstützung
Rechtschreibung
Vi kann Rechtschreibprüfung! Die Rechtschreibprüfung muss per Ex Befehl eingeschaltet werden:
: setlocal spell
Will man eine andere Sprache als Englisch, erfordert der Befehl zusätzlich die Angabe der Sprache.
: setlocal spell spellang=de

Falsch geschriebene Wörter sind rot?rosa? hinterlegt, potentielle Grammatikfehler werden blau gekennzeichnet.
Um eine Korrekturhilfe zu bekommen, geht man mit dem Cursor auf das falsche Wort und drückt z=, also kleines z und danach das Gleichheitszeichen.
Will man die Rechtschreibprüfung ausschalten, geht das mit : set nospell
Wer sich mit dem Thema weiter beschäftigen möchte:
Link: linux.com: Rechtschreibung im Vim
Syntax
Der Vi kann Syntaxhervorhebung und kann sie in verschiedenen Farbschemata darstellen.
Wortvorschläge im Vi sind teilweise eingebaut, teilweise kann man sie per Plugin nachrüsten.
Für die hier im Fokus stehenden Sprachen - HTML, CSS, JavaScript und PHP - braucht man dafür auch keine Plugins.

Wortvorschläge zu bestimmten formalen Sprachen erhält man mit Strg + xo, also die "Strg" Taste halten, dann erst "x" und danach "o" drücken.
Einfache Wortvorschläge erhält man über Strg+n. Diese Wortvorschläge basieren auf den im Text vorkommenden Wörtern und sind sprachunabhängig.
Die Funktionen rund um Wortvorschläge lassen sich nur im Eingabemodus
aufrufen!
Link: Guter Artikel zu Vervollständigung
Link: Hinweise auf Plugins
Links
Zusammenfassung
Der Vi ist schon was Spezielles. Lässt man sich drauf ein, kann man in mancher Hinsicht nahezu zaubern, aber die Bedienung ist komplett losgelöst von den GUI-Normen, an die die meisten von uns gewöhnt sind.
Ich persönlich mag da nicht gerne urteilen. Der Vi war der erste Editor, mit dem ich unter Unix laufen und programmieren gelernt habe. Die Tastenkombination für bestimmte Kommandos befinden sich noch immer in meinen Fingern und ich tippe sie manchmal, auch wenn ich gar nicht mit dem Vi arbeite.
Für reine Programmieraufgaben ist der Vi immer noch das Werkzeug. Das Editieren von .html mache ich allerdings lieber mit was Anderem - in den Dateien kommt einfach zu viel normaler Text vor und dann ist der Vi unterfordert.