Vim Modi · 5 min read · Jan 21, 2026

Kompatible und nicht kompatible Modi in Vim

Bisher haben wir in unseren Tutorials rund um Vim die Modeline-Funktion des Editors sowie die Möglichkeit, die Funktionalität von Vim mit Plugins zu erweitern, besprochen. Wie wir alle wissen, bietet Vim jedoch eine Fülle von integrierten Funktionen; um die Diskussion weiterzuführen, werden wir in diesem Tutorial die verfügbaren Modi besprechen, in denen der Editor gestartet werden kann.

Aber bevor wir das tun, beachten Sie bitte, dass alle in diesem Tutorial genannten Beispiele, Befehle und Anweisungen auf Ubuntu 14.04 getestet wurden und die verwendete Vim-Version 7.4 ist.

Um die oben genannten Vim-Modi richtig zu verstehen, müssen Sie zunächst einen wichtigen Aspekt des Initialisierungsprozesses des Editors verstehen.

System- und lokale vimrc

Der betreffende Aspekt ist: Wenn Vim gestartet wird, sucht der Editor nach einer systemweiten ‘vimrc’-Datei, um systemweite Standardinitialisierungen durchzuführen.

Diese Datei befindet sich normalerweise im $VIM/vimrc-Pfad auf Ihrem System, aber wenn das nicht der Fall ist, können Sie den genauen Speicherort ermitteln, indem Sie den Befehl :version innerhalb von Vim ausführen. Zum Beispiel, in meinem Fall, hier ist der relevante Auszug aus der Ausgabe, die der Befehl erzeugt hat:

...
...
...
system vimrc file: "$VIM/vimrc"  
user vimrc file: "$HOME/.vimrc"  
2nd user vimrc file: "~/.vim/vimrc"  
user exrc file: "$HOME/.exrc"  
fall-back for $VIM: "/usr/share/vim"  
...
...
...

Also befindet sich die systemweite ‘vimrc’-Datei tatsächlich im $VIM/vimrc , aber ich habe überprüft, dass die $VIM-Umgebungsvariable auf meinem Rechner nicht gesetzt ist. In diesem Fall - wie Sie in der obigen Ausgabe sehen können - gibt es einen Rückfallwert für $VIM, der in meinem Fall */usr/share/vim* ist. Als ich versuchte, nach ‘vimrc’ an diesem Pfad zu suchen, stellte ich fest, dass die Datei vorhanden ist. Das ist meine systemweite vimrc, die - wie ich bereits erwähnt habe - beim Start von Vim gelesen wird.

Nachdem diese systemweite vimrc analysiert wurde, sucht der Editor nach einer benutzerspezifischen (oder lokalen) ‘vimrc’-Datei. Die Reihenfolge der Suche nach der lokalen vimrc ist: Umgebungsvariable VIMINIT, $HOME/.vimrc, Umgebungsvariable EXINIT und eine Datei namens ‘exrc’. Normalerweise ist es die $HOME/.vimrc oder ~/.vimrc, die existiert und als lokale vimrc behandelt wird.

Über welche Kompatibilität sprechen wir

Da wir über die kompatiblen und nicht kompatiblen Modi von Vim sprechen, ist es wichtig zu wissen, welche Art von Kompatibilität diese Modi aktivieren und deaktivieren. Dazu sollte man sich zunächst bewusst sein, dass Vim eine Abkürzung für V i IM proved ist, und wie der vollständige Name andeutet, ist der Editor eine verbesserte Version des Vi-Editors.

Mit verbessert ist gemeint, dass die Funktionalität, die Vim bietet, größer ist als die von Vi. Für ein besseres Verständnis des Unterschieds zwischen den beiden Editoren, gehen Sie hierhin.

Während wir also über die kompatiblen und nicht kompatiblen Modi von Vim sprechen, bezieht sich die Kompatibilität, über die wir sprechen, auf die Kompatibilität von Vim mit Vi. Wenn im kompatiblen Modus ausgeführt, werden die meisten Verbesserungen und Erweiterungen von Vim deaktiviert. Beachten Sie jedoch, dass Vim in diesem Modus nicht einfach Vi emuliert - der Modus setzt im Grunde einige Standardoptionen auf die Art und Weise, wie der Vi-Editor funktioniert.

Der nicht kompatible Modus - das braucht man nicht zu sagen - lässt Vim ohne Vi-Kompatibilität arbeiten, wodurch alle seine Verbesserungen/Funktionen/Funktionalitäten dem Benutzer zur Verfügung stehen.

Wie aktiviert/deaktiviert man diese Modi?

Versuchen Sie, den Befehl :help compatible in Vim auszuführen, und Sie sollten die folgende Syntax sehen:

'compatible' 'cp' boolean (standardmäßig ein, aus, wenn eine |vimrc| oder |gvimrc|  
 Datei gefunden wird)

Die Beschreibung besagt also, dass der kompatible Modus standardmäßig EIN ist, aber ausgeschaltet wird, wenn eine vimrc-Datei gefunden wird. Aber von welcher vimrc sprechen wir? Die Antwort ist lokale vimrc. Vertiefen Sie sich in die Details, die der Befehl :help compatible bietet, und Sie werden die folgende Zeile finden, die die Dinge klarer machen sollte:

Effektiv bedeutet dies, dass, wenn eine |vimrc| oder |gvimrc| Datei existiert, Vim die Vim-Standards verwenden wird, andernfalls wird es die Vi-Standards verwenden. (*Hinweis: Dies geschieht nicht für die systemweite vimrc oder gvimrc-Datei, noch für eine Datei, die mit dem |-u| Argument angegeben wird*).

Was tatsächlich passiert, ist, dass, wann immer Vim gestartet wird, es zuerst die systemweite vimrc-Datei analysiert - zu diesem Zeitpunkt ist der kompatible Modus standardmäßig EIN. Immer wenn eine Benutzer- (oder lokale) vimrc gefunden wird, wird der nicht kompatible Modus aktiviert. Der Befehl :help compatible-default macht es ziemlich klar:

Wenn Vim startet, ist die 'compatible'-Option aktiv. Dies wird verwendet, wenn Vim seine Initialisierungen startet. Aber sobald eine Benutzer-vimrc-Datei gefunden wird, oder eine vimrc-Datei im aktuellen Verzeichnis, oder die Umgebungsvariable "VIMINIT" gesetzt ist, wird sie auf 'nocompatible' gesetzt.

Falls Sie das Standardverhalten überschreiben und den nicht kompatiblen Modus aktivieren möchten, wenn der Editor beginnt, die systemweite vimrc-Datei zu analysieren, kann dies erreicht werden, indem Sie den folgenden Befehl zu Beginn dieser Datei hinzufügen:

:set nocompatible

Weitere nützliche Details

Hier sind einige weitere nützliche Details zu diesen Modi:

Aber es gibt einen Nebeneffekt beim Setzen oder Zurücksetzen von 'compatible' in dem Moment, in dem eine .vimrc-Datei gefunden wird: Mappings werden in dem Moment interpretiert, in dem sie begegnet werden. Dies macht einen Unterschied bei der Verwendung von Dingen wie "". Wenn die Mappings von einem bestimmten Wert von 'compatible' abhängen, setzen oder zurücksetzen Sie es, bevor Sie das Mapping geben.

Das oben beschriebene Verhalten kann auf folgende Weise überschrieben werden:  
- Wenn das Argument "-N" in der Befehlszeile angegeben wird, wird 'nocompatible' verwendet, selbst wenn keine vimrc-Datei existiert.  
- Wenn das Argument "-C" in der Befehlszeile angegeben wird, wird 'compatible' verwendet, selbst wenn eine vimrc-Datei existiert.  
- Wenn das Argument "-u {vimrc}" verwendet wird, wird 'compatible' verwendet.  
- Wenn der Name der ausführbaren Datei mit "ex" endet, funktioniert dies wie das Argument "-C": 'compatible' wird verwendet, selbst wenn eine vimrc-Datei existiert. Dies wurde getan, um Vim wie "ex" zu verhalten, wenn es als "ex" gestartet wird.

Zugegeben, die Chancen stehen gut, dass Sie sich nicht in einer Situation befinden werden, in der Sie den Vi-kompatiblen Modus von Vim aktivieren müssen, aber das bedeutet nicht, dass Sie den Initialisierungsprozess des Editors ignorieren sollten. Schließlich weiß man nie, wann dieses Wissen von Nutzen sein könnte.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.