Ich mag den Editor Vim sehr und ich möchte ihn auch zum Programmieren benutzen. Allerdings ist das mit dem originalen Vim ziemlich kompliziert. Daher habe ich mir mal NeoVim häher angeschaut. Ein modernerer Fork von Vim. Einfach mal die Grundsätzlichen Unterschiede rausgesucht, um zu sehen, welchen ich nun nehmen muss, oder ob ich einfach “beide” weiter benutzen kann. Spoiler Alert: Ich kann einfach beide weiter benutzen.

Und ich werde versuchen mir ein Developement Environment in Rust aufzubauen, das einfach nachvollziehbar ist und das How-To dazu werde ich natürlich auch hier veröffentlichen.

MerkmalVimNeovim
ProjektphilosophieStabilität, Abwärtskompatibilität; von einem Hauptentwickler (Bram Moolenaar, † 2023) geprägtCommunity-getrieben, schnelle Iteration, Fokus auf Modernisierung und Erweiterbarkeit
KonfigurationsspracheVimscript (VimL), plus Vim9script für neue PluginsLua (nativ), Vimscript wird weiterhin unterstützt
LSP-Support (Code-Completion, Fehlerprüfung)Nicht eingebaut; erfordert Plugins wie coc.nvim oder vim-lspNativ eingebaut (vim.lsp)
Asynchrone VerarbeitungHistorisch limitiert; Plugins können blockierenNativ über libuv; Hintergrundprozesse ohne Blockierung
Plugin-SpracheVimscript, Python, Ruby (oft mit Kompatibilitätsproblemen)Lua, Vimscript; Remote-Plugins über msgpack-RPC in beliebigen Sprachen
Verfügbarkeit auf ServernStandard auf praktisch jedem Linux/Unix-System; essenziell für SSH-WorkflowsSelten vorinstalliert; muss oft erst installiert werden
Konfigurationsverzeichnis~/.vim/ (Historisch, hartcodiert)~/.config/nvim/ (Folgt XDG-Standard)

Die wichtigste praktische Konsequenz

Die Wahl hängt stark von meinem Arbeitsumfeld ab:

  • Wenn ich viel auf Remote-Servern arbeite (SSH): Vim ist die sichere Bank, weil es fast überall vorinstalliert ist
  • Wenn ich lokal eine moderne, IDE-ähnliche Erfahrung mit Plugins und LSP will: Neovim bietet die leistungsfähigere und modernere Basis

Parallelinstallation - Ja!

Problemlos machbar. Vim und Neovim sind völlig eigenständige Programme mit unterschiedlichen Binärnamen (vim vs. nvim), getrennten Konfigurationsverzeichnissen und eigenen Plugin-Ordnern. Sie behindern sich gegenseitig nicht.

Getrennte Konfigurationen

VimNeovim
Konfigurationsdatei~/.vimrc~/.config/nvim/init.vim oder init.lua
Plugin-Verzeichnis~/.vim/~/.local/share/nvim/
Plugin-Manager (Beispiele)vim-plug, Vundlelazy.nvim, packer.nvim

Da beide komplett getrennte Pfade verwenden, kann ich in beiden unterschiedliche Plugins, Themes und Einstellungen haben, ohne dass es zu Konflikten kommt.

Mögliche Überschneidung

Es gibt ein kleines Detail: Manche Distributionen bieten ein Paket namens vim an, das eigentlich ein Symlink auf neovim ist (oder umgekehrt). Das ist aber selten und nur bei bewusst so konfigurierten Systemen der Fall. Normalerweise gilt:

  • vim startet Vim
  • nvim startet Neovim

Ich kann das mit which vim und which nvim prüfen.

Praktischer Tipp: Standard Editor

Wenn ich beide parallel nutze, lohnt es sich, Neovim als Standard-Editor zu setzen (z. B. über $EDITOR oder alternatives) und Vim als Fallback für Server/SSH zu behalten. So habe ich lokal die moderne Umgebung und auf Servern trotzdem immer einen funktionierenden Editor.

Superflexibel als Alias

Wenn du häufig zwischen beiden wechselst, kannst du dir Aliase in deiner ~/.bashrc anlegen. Zum Beispiel bei Debian/Ubuntu:

alias vim='nvim'
alias vim-old='/usr/bin/vim.basic'

Auf Arch und Manjaro wäre der Alias für den originalen Vim einfach alias vim-old='vim', weil vim dort noch auf den originalen Vim zeigt.

Permanent - Debian & Ubuntu

Für Ubuntu und Debian nutzt du update-alternatives, um Neovim systemweit als Standard zu registrieren.

#### Neovim als Alternative für vi, vim, view und vimdiff registrieren
sudo update-alternatives --install /usr/bin/vi vi /usr/bin/nvim 60
sudo update-alternatives --install /usr/bin/vim vim /usr/bin/nvim 60
sudo update-alternatives --install /usr/bin/view view /usr/bin/nvim 60
sudo update-alternatives --install /usr/bin/vimdiff vimdiff /usr/bin/nvim 60

Die 60 am Ende ist die Priorität. Da Neovim in der Regel mit einer niedrigeren Priorität installiert wird als Vim, sorgt dieser Befehl dafür, dass vim und vi auf nvim zeigen .

Um zu prüfen, ob es funktioniert hat:

which vim
#### sollte /usr/bin/nvim ausgeben

Falls du die Zuordnung später wieder ändern möchtest, kannst du sudo update-alternatives --config vim ausführen und interaktiv auswählen .

Auf Ubuntu gibt es zusätzlich den Befehl sudo select-editor, der dir eine Liste der verfügbaren Editoren anzeigt und dich auswählen lässt . Das ist der einfachste Weg, wenn du nicht manuell in Konfigurationsdateien eingreifen möchtest.

Permanent - Arch & Manjaro

Für Manjaro und Arch Linux setzt du stattdessen die Umgebungsvariablen. Das ist auch der sauberere Weg, weil es unabhängig von der Distribution funktioniert.

#### Systemweit für alle Benutzer
sudo tee -a /etc/environment <<EOF
EDITOR=nvim
VISUAL=nvim
EOF

Die Variablen werden beim nächsten Login für alle Benutzer aktiv . Ein Vorteil: Programme, die auf $EDITOR oder $VISUAL zugreifen, nutzen dann automatisch Neovim.

Als sudo Editor

Ein Hinweis für sudo: Wenn du sudo visudo oder ähnliches ausführst, werden die Umgebungsvariablen aus /etc/environment standardmäßig nicht übernommen, weil sudo die Umgebung aus Sicherheitsgründen bereinigt . In dem Fall kannst du sudo -E visudo nutzen oder die Variable in der sudoers-Datei mit Defaults env_keep += "EDITOR VISUAL" ergänzen.

sudo -E visudo - temporär

Der -E-Parameter (für --preserve-env) sorgt dafür, dass sudo die Umgebung für diesen einen Befehl komplett beibehält. Du müsstest also immer sudo -E visudo tippen .

Das ist unpraktisch, wenn du es oft brauchst. Der Eintrag in /etc/sudoers ist die dauerhafte Lösung, damit du einfach sudo visudo nutzen kannst und trotzdem Neovim bekommst.

sudoers - permanent

Die Zeile Defaults env_keep += "EDITOR VISUAL" trägst du in die Datei /etc/sudoers ein. Das machst du niemals direkt, sondern immer über den Befehl sudo visudo. Das Tool prüft die Syntax, bevor die Änderung gespeichert wird, und verhindert so, dass du dir das System zerschießt.

Wenn du sudo visudo ausführst, öffnet sich die /etc/sudoers in einem Editor. Du suchst die Zeile, die mit Defaults beginnt, und fügst darunter oder am Ende der Defaults-Sektion deine Zeile hinzu.

Ein Ausschnitt aus der Datei sieht dann so aus:

## Override built-in defaults
Defaults    env_reset
Defaults    env_keep += "EDITOR VISUAL"

Die Zeile Defaults env_reset ist meist schon vorhanden. Sie sorgt dafür, dass sudo eine saubere Umgebung nutzt. Mit Defaults env_keep += "EDITOR VISUAL" sagst du sudo, dass es die Variablen EDITOR und VISUAL aus deiner Umgebung behalten soll .

Warum das nötig ist

Standardmäßig bereinigt sudo die Umgebung. Wenn du also EDITOR=nvim gesetzt hast und dann sudo visudo ausführst, sieht sudo diese Variable nicht mehr. Es fällt dann auf den Standard-Editor zurück, oft vi oder nano .

Mit dem env_keep-Eintrag überlebt deine EDITOR-Variable den sudo-Aufruf, und visudo öffnet sich mit Neovim (oder was auch immer du eingestellt hast).

Quellen