Vim läuft auf Windows nativ — ohne Cygwin, ohne MSYS2, ohne WSL — und ist sowohl im Terminal als auch als GUI (gVim) verfügbar. Wer aus der Linux- oder macOS-Welt kommt, sollte ein paar Windows-Eigenheiten kennen: die Konfiguration heißt unter Windows traditionell _vimrc (mit Unterstrich) und liegt in %USERPROFILE%, das System-Clipboard ist nur in Vim-Builds mit +clipboard-Feature verfügbar, und Windows Defender hat eine spezielle Beziehung zu Plugin-Manager-Operationen. Diese Anleitung deckt den Standard-Weg über winget, die GUI-Variante mit gVim, Scoop als Power-User-Alternative und WSL als nativen Unix-Pfad ab.

Voraussetzungen und Entscheidungen

Bevor du installierst, sind zwei Fragen sinnvoll:

  • Terminal oder GUI? Vim funktioniert im Windows Terminal, in PowerShell und in der klassischen cmd.exe; gVim bietet zusätzlich ein eigenständiges GUI-Fenster mit besserer Schriftdarstellung und nativer Maus-Integration. Die meisten Vim-Profis nutzen beides parallel — Console für Terminal-Workflows, GUI für ruhige Schreib-Sessions.
  • Nativ oder WSL? Reines Windows-Vim hat den schnellsten Start und volle Integration in Windows-Pfade. WSL ist der direkte Unix-Weg — alles, was in der Linux-Doku steht, funktioniert dort 1:1, inklusive Plugins mit Build-Steps und Clipboard-Brücke nach Windows.

Für die meisten Setups: winget installiert Vim und gVim mit einem Befehl. Wer ohnehin viele Tools über scoop pflegt, nimmt Scoop — der Unterschied ist Geschmack, nicht Funktion.

Vim installieren

Der offizielle Installer kommt von vim.org und enthält das CLI-vim, das GUI-gvim und alle Standard-Plugins. Schneller geht es über den Paketmanager:

shell powershell
# Variante A: Microsoft-Standard via winget
winget install vim.vim

# Variante B: Scoop (zusätzlich gvim als GUI)
scoop install vim
scoop install gvim

# Variante C: Chocolatey
choco install vim

Nach der Installation steht vim im PATH zur Verfügung — Verifikation:

shell powershell
vim --version | Select-Object -First 3
Output
VIM - Vi IMproved 9.1 (2024 Jan 02, compiled May 17 2026 11:42:18)
MS-Windows 64-bit GUI/console version with OLE support
Included patches: 1-1234

Ein zweiter Blick lohnt sich auf die Feature-Liste — + vor einem Feature heißt „eingebaut", - heißt „abgeschaltet":

shell powershell
vim --version | Select-String -Pattern "clipboard|python3|lua"
Output
+clipboard         +mouseshape        +python3           +tag_old_static
+eval              +mouse_xterm       +lua               +tag_any_white

Wer hier ein Minus vor clipboard sieht, hat eine zu schlanke Vim-Variante erwischt — typischerweise löst eine Reinstallation über winget oder ein Wechsel auf die offizielle gVim-Variante das Problem.

Konfigurations-Pfad

Die Konfigurations-Datei heißt unter Windows klassisch _vimrc (mit Unterstrich, ohne führenden Punkt) und liegt in %USERPROFILE%, also typischerweise C:\Users\<name>\_vimrc. Neuere Vim-Versionen lesen alternativ auch ~/.vimrc — gewählt wird, was zuerst gefunden wird.

shell powershell
# _vimrc-Stub erzeugen und im Editor öffnen
New-Item -ItemType File "$env:USERPROFILE\_vimrc"
vim "$env:USERPROFILE\_vimrc"

# Wer den Unix-Pfad bevorzugt (~/.vimrc), darf das auch:
New-Item -ItemType File "$env:USERPROFILE\.vimrc"

Plugin-Verzeichnisse sind ebenfalls Windows-spezifisch. Wo Vim auf Unix ~/.vim/ nutzt, sucht es unter Windows in ~/vimfiles/:

text Verzeichnis-Konvention
%USERPROFILE%\_vimrc                          ← User-vimrc (klassisch)
%USERPROFILE%\.vimrc                          ← User-vimrc (Unix-Stil, ab Vim 9.x)
%USERPROFILE%\vimfiles\                       ← User-runtime-Verzeichnis
%USERPROFILE%\vimfiles\pack\<group>\start\    ← Auto-loaded Packages
%USERPROFILE%\vimfiles\pack\<group>\opt\      ← On-demand-Packages (:packadd)

Wer Plugins über vim-plug oder einen anderen Manager installiert, landet automatisch im richtigen vimfiles\-Pfad — solange der Manager nicht von Hand auf einen Unix-Pfad konfiguriert wurde.

Clipboard-Integration

Anders als auf macOS oder Linux ist das System-Clipboard auf Windows in Vim direkt eingebaut — vorausgesetzt, der Vim-Build hat das +clipboard-Feature (siehe Feature-Check oben). Eine zusätzliche Tool-Installation ist nicht nötig.

In der _vimrc aktiviert eine einzelne Zeile die System-Clipboard-Integration für yank und paste:

vim _vimrc
" Yank/Paste-Operationen nutzen das Windows-Clipboard direkt.
" `unnamedplus` mappt das namenlose Register auf das System-
" Clipboard (+-Register) — `y` kopiert nach Windows, `p` fügt ein.
set clipboard^=unnamedplus

Eine kleine Stolperfalle: der Standard-Build von vim.org hat +clipboard aktiviert; manche Drittanbieter-Pakete (insbesondere alte MSYS2-Builds) liefern aber Vim ohne Clipboard-Feature aus. Wenn set clipboard mit E518: Unknown option oder einem leeren :reg +-Register quittiert wird, ist das die wahrscheinlichste Ursache.

WSL als alternativer Weg

Wer ohnehin viel mit Linux-Tools arbeitet, fährt mit WSL (Windows Subsystem for Linux) oft glücklicher als mit der nativen Windows-Variante. Innerhalb einer WSL-Distribution gilt die Linux-Anleitung vollständig — Vim verhält sich exakt wie auf einem nativen Linux:

shell wsl ubuntu
# In einer Ubuntu-WSL-Sitzung
sudo apt update
sudo apt install vim-gtk3        # mit +clipboard, +python3, +lua
# oder
sudo apt install vim-nox         # gleiche Features, ohne GUI

# Konfig-Pfad im Linux-Stil
nvim ~/.vimrc                    # oder direkt: vim ~/.vimrc

Ein paar Praxis-Hinweise:

  • Pfade über die WSL-Grenze funktionieren, sind aber langsam. Wer Repos in /home/<name>/projects/ hält und nur dort editiert, hat die beste Performance.
  • Clipboard-Integration ist seit WSL2 + Windows 11 weitgehend automatisch verfügbar; in älteren Setups hilft ein Mapping auf clip.exe (für yank) und PowerShell (für paste).
  • Windows Terminal ist als WSL-Frontend deutlich angenehmer als der klassische cmd-Wrapper — Truecolor, gute Schrift-Optionen, eigene Profile pro Distribution.

Verifikation

Nach der Installation prüft :version (in Vim) oder vim --version (in der Shell) das wichtigste auf einen Blick:

shell powershell
# Version und Compile-Optionen
vim --version

# Direkt im Editor — zeigt Version, Patches, Compile-Flags
# (im Normal-Mode)
# :version
# :echo has('clipboard')
# :echo $VIMRUNTIME

Ein erster Test der Konfiguration:

shell powershell
# Vim sauber ohne Konfig starten — zum Vergleichen oder Debuggen
vim -u NONE

# Mit eigener Konfig starten und gleich :version anzeigen
vim -c ":version"

Damit ist die Basis steht. Der nächste Schritt ist der erste Start und vimtutor, wo die Modi-Bedienung praktisch geübt wird.

Häufige Stolperfallen

Windows Defender bremst Plugin-Installationen aus

Beim ersten :PlugInstall oder einem ähnlichen Manager-Befehl scannt Defender jede heruntergeladene Datei einzeln. Bei großen Plugin-Sets dauert das mehrere Minuten statt Sekunden. Lösung: das Plugin-Verzeichnis %USERPROFILE%\vimfiles\ als Ausnahme eintragen — Add-MpPreference -ExclusionPath "$env:USERPROFILE\vimfiles". Nur tun, wenn dir die Sicherheitsabwägung bewusst ist.

`_vimrc` und `.vimrc` parallel führt zu Verwirrung

Wenn beide Dateien existieren, wählt Vim eine — abhängig von der Build-Variante und Version. Wer einmal vergisst, welche der beiden er gerade editiert, frisst sich am leeren Bildschirm fest. Empfehlung: eine Datei pflegen, die andere löschen.

Build-Tools für coc.nvim und ähnliche Plugins nötig

Plugins mit nativen Komponenten — insbesondere coc.nvim mit seinen Sprach-Erweiterungen, aber auch Snippet-Engines mit C-Anteilen — brauchen einen C-Compiler. Auf Windows ist das die Build Tools for Visual Studio oder MSYS2/MinGW. Ohne sie scheitert der Build still mit einer kryptischen Fehlermeldung.

`$HOME` kann unter Windows leer oder falsch sein

Manche Plugins erwarten ein gesetztes $HOME. PowerShell setzt es per Default auf %USERPROFILE%, cmd.exe nicht. Wer Plugins über mehrere Shells nutzt, sollte setx HOME %USERPROFILE% einmalig setzen — dann ist ~/ in Vim verlässlich der Heimatordner.

`vimfiles` vs. `.vim` — Windows-spezifisch

Auf Linux/macOS heißt das User-Runtime-Verzeichnis ~/.vim/, auf Windows ~/vimfiles/. Wer Dotfiles zwischen Systemen synchronisiert, muss das berücksichtigen — oder per set runtimepath+=~/.vim beide Pfade einbinden.

Weiterführende Ressourcen

Externe Quellen

Verwandte Artikel

/ Weiter

Zurück zu Grundlagen

Zur Übersicht