Auf Windows hat Emacs eine ruhige, gut gepflegte Heimat — die offiziellen Windows-Builds vom GNU-Projekt werden seit Jahren zuverlässig veröffentlicht. Dazu kommen drei Paketmanager-Wege (Chocolatey, Scoop und Microsofts winget) sowie ein vollwertiges POSIX-Setup über MSYS2 für alle, die Emacs eng mit Unix-Tooling kombinieren wollen. Dieser Artikel zeigt jede der fünf Varianten Schritt für Schritt, klärt die für Windows typischen Fallen rund um HOME-Variable, Native-Compilation und Antivirus — und sortiert, wann welcher Weg sinnvoll ist.
Die Wege auf einen Blick
Es gibt unter Windows keinen einzelnen „richtigen" Weg, Emacs zu installieren — alle nachfolgenden Varianten liefern dieselbe Editor-Codebasis. Sie unterscheiden sich in der Update-Mechanik, in den Berechtigungen (Admin oder nicht) und darin, wie eng die Installation mit dem restlichen System verzahnt ist.
| Variante | Quelle | Stärke | Wann sinnvoll |
|---|---|---|---|
| Offizielles Build | gnu.org / GNU-Mirror | direkter Bezug, signiert von Corwin Brust | wer einen Build ohne Zwischen-Layer will |
| Chocolatey | community.chocolatey.org | Auto-Update über choco upgrade, system-weit | Workstations mit zentralem Software-Management |
| Scoop | scoop bucket extras | Installation ins Benutzerprofil, keine Admin-Rechte | Entwickler-Setups ohne lokale Adminrechte |
| winget | Microsoft-eigener Paketmanager | bereits an Bord auf Windows 11, kürzester Einzeiler | wer ohne Drittanbieter-Manager auskommen will |
| MSYS2 / MINGW | pacman im MSYS2-Universum | Unix-Tooling, einfache Native-Comp-Toolchain | Power-User mit Bash, Git und Compiler-Workflow |
Die kurze Empfehlung lautet: Offizielles Build oder Scoop für die meisten Einsteiger — beides ohne Adminrechte einsetzbar, klar verortet und gut zu deinstallieren. Wer bereits Chocolatey oder winget im Einsatz hat, bleibt konsequent dabei. MSYS2 lohnt sich, wenn Emacs als Teil eines vollwertigen Unix-ähnlichen Workflows laufen soll.
Variante A — Offizielles Build von gnu.org
Das vom GNU-Projekt selbst veröffentlichte Windows-Build liegt unter ftp.gnu.org/gnu/emacs/windows/ bereit (sowie auf jedem GNU-Mirror) und wird von Corwin Brust gebaut und signiert. Es gibt zwei Formate: einen Installer (emacs-XX-installer.exe) und ein portables ZIP (emacs-XX.zip).
Schritt 1 — Herunterladen
Im Verzeichnis findest du pro Major-Version ein eigenes Unterverzeichnis (z. B. emacs-30/). Lade dort die jeweils aktuellste Datei für 64-Bit:
emacs-30.2-installer.exe # geführter Installer
emacs-30.2.zip # portables ZIP-Archiv
emacs-30.2.zip.sig # GPG-Signatur (optional verifizieren)Schritt 2 — Installer oder ZIP entpacken
Der Installer richtet Emacs in einem Programmpfad ein und legt Start-Verknüpfungen an. Wer keine Adminrechte hat oder Emacs portabel halten will, nimmt das ZIP und entpackt es an einen ruhigen Ort. Bewährt hat sich ein kurzer Pfad ohne Leerzeichen — etwa C:\emacs\:
# Beispielhaft: ZIP unter C:\emacs entpacken
Expand-Archive -Path "$HOME\Downloads\emacs-30.2.zip" -DestinationPath "C:\emacs"Nach dem Entpacken liegen unter C:\emacs\ die üblichen Unterordner: bin\ mit den Executables, share\ mit Lisp-Sourcen und Hilfedateien, var\ mit Laufzeitdaten.
Schritt 3 — PATH ergänzen (optional, empfohlen)
Damit Emacs aus jeder Shell aufrufbar ist, ergänzt du C:\emacs\bin im Benutzer-PATH:
# Benutzer-PATH lesen und um C:\emacs\bin erweitern
$alt = [Environment]::GetEnvironmentVariable("Path", "User")
$neu = "$alt;C:\emacs\bin"
[Environment]::SetEnvironmentVariable("Path", $neu, "User")Eine neue Shell-Session sieht den geänderten Pfad — danach lassen sich runemacs.exe, emacs.exe und emacsclientw.exe ohne Pfadangabe starten.
Variante B — Chocolatey
Chocolatey ist der älteste systemweite Paketmanager für Windows. Wer ihn schon einsetzt, bekommt Emacs in einer Zeile:
# Aus einer Admin-PowerShell ausführen
choco install emacs
# Später aktualisieren
choco upgrade emacsChocolatey installiert Emacs systemweit (typischerweise unter C:\ProgramData\chocolatey\lib\Emacs\tools\) und legt Shims unter C:\ProgramData\chocolatey\bin\ an, sodass runemacs.exe aus jeder Shell aufrufbar ist. Vorteil: ein einheitliches Update-Tool für alle deine Pakete. Nachteil: Admin-Rechte sind Pflicht, und du bist an die Update-Kadenz des Paket-Maintainers gebunden — neue Emacs-Versionen erscheinen hier mit ein paar Tagen Verzögerung gegenüber gnu.org.
Variante C — Scoop
Scoop installiert ausschließlich ins Benutzerprofil und kommt deshalb komplett ohne Adminrechte aus — der populärste Weg in Firmen, in denen lokale Adminrechte fehlen. Emacs wohnt im sogenannten extras-Bucket, der einmalig registriert werden muss.
# Falls Scoop noch fehlt — einmaliges Setup
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex
# Extras-Bucket registrieren und Emacs installieren
scoop bucket add extras
scoop install emacs
# Update später
scoop update emacsScoop legt die Installation unter %USERPROFILE%\scoop\apps\emacs\current\ ab und richtet Verknüpfungen für runemacs.exe und einen separaten Emacs-Client auf dem Desktop ein. Da Scoop alle Binaries seines shims-Ordners automatisch in den User-PATH einträgt, sind emacs.exe, runemacs.exe und emacsclient.exe sofort in der Shell verfügbar.
Variante D — winget
winget ist der Microsoft-eigene Paketmanager und auf aktuellen Windows-11-Installationen vorinstalliert. Der Einzeiler ist die kürzeste Variante überhaupt:
winget install --id GNU.Emacs -e
# Update
winget upgrade --id GNU.EmacsDer -e-Schalter erzwingt einen exakten ID-Match — sicher gegen Tippfehler oder gleichnamige Pakete. winget greift im Hintergrund auf den offiziellen Installer von gnu.org zurück. Vorteil: kein Drittanbieter-Tool nötig. Nachteil: Die ID-Form (GNU.Emacs) kann sich zwischen Pretest- und Stable-Veröffentlichungen verschieben — im Zweifel mit winget search emacs die aktuelle ID prüfen.
Variante E — MSYS2 / MINGW
MSYS2 bringt eine vollständige POSIX-ähnliche Umgebung samt pacman-Paketmanager auf Windows. Emacs ist dort als nativer MINGW-Build verfügbar und profitiert direkt von der mitgelieferten GCC-Toolchain — was die Einrichtung von Native-Compilation deutlich erleichtert.
# In der UCRT64-Shell von MSYS2 ausführen
pacman -Syu # System aktualisieren
pacman -S mingw-w64-ucrt-x86_64-emacs # natives Emacs installierenMSYS2 kennt mehrere Subsysteme — empfohlen ist heute das UCRT64-Environment (Universal C Runtime, Microsofts moderne CRT). Wer einen klassischen MINGW64-Build bevorzugt, nimmt entsprechend mingw-w64-x86_64-emacs. Nach der Installation liegt emacs.exe unter C:\msys64\ucrt64\bin\emacs.exe und ist sowohl aus der MSYS2-Shell als auch aus PowerShell aufrufbar — letzteres nur, wenn der MSYS2-bin-Pfad im Windows-PATH liegt. Faustregel: MSYS2 lohnt, wenn du Emacs ohnehin mit Bash, git, ripgrep und einem C-Compiler kombinieren willst. Wer Emacs „nur" als Editor sucht, fährt mit einer der vier Varianten weiter oben einfacher.
Erster Start und Versions-Check
Im bin\-Ordner liegen drei verschiedene Start-Programme, die oft Verwirrung stiften:
| Executable | Wofür |
|---|---|
runemacs.exe | startet die GUI ohne separates Konsolen-Fenster — der Standard-Desktop-Start |
emacs.exe | startet die GUI, hängt aber ein Konsolen-Fenster an (sinnvoll für Debug-Logs) |
emacs.exe -nw | startet Emacs als reine Terminal-Anwendung in der aktuellen Konsole |
Den schnellen Versions-Check macht man am besten aus der Shell:
emacs --versionGNU Emacs 30.2
Copyright (C) 2025 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.Für den ersten Eindruck reicht ein simpler Doppelklick auf runemacs.exe oder die im Installer angelegte Start-Verknüpfung. Das Splash-Window erklärt sich weitgehend selbst, und der Editor lässt sich über das Datei-Menü sauber wieder beenden.
HOME-Variable und init.el-Pfad
Eine der konsequentesten Quellen für Verwirrung unter Windows ist die Frage, wo Emacs nach seiner Konfiguration sucht. Auf Unix-Systemen ist das schlicht $HOME/.emacs.d/. Unter Windows ist die Reihenfolge mehrstufig:
- Existiert die Umgebungsvariable
HOME, sucht Emacs unter%HOME%\.emacs.d\init.el(bzw.%HOME%\.config\emacs\init.elnach XDG-Konvention). - Fehlt
HOME, fällt Emacs auf%APPDATA%\zurück — typischerweiseC:\Users\<name>\AppData\Roaming\.emacs.d\.
Punkt 2 ist der Klassiker für „warum lädt meine init.el nicht?" — die Datei liegt am vermuteten Pfad, Emacs liest aber einen anderen. Die saubere Lösung ist, HOME einmalig zu setzen:
# Standard-Empfehlung: das eigene Benutzer-Verzeichnis
[Environment]::SetEnvironmentVariable("HOME", "$HOME", "User")
# Alternative: ein eigenes Konfig-Verzeichnis, z. B. mit Git versioniert
[Environment]::SetEnvironmentVariable("HOME", "C:\Users\michael\dotfiles", "User")Nach einer neuen Shell-Session zeigt echo $env:HOME den neuen Wert; Emacs liest init.el dann verlässlich aus dem dort vermerkten Unterordner. Wer sich nicht sicher ist, welche Datei Emacs tatsächlich geladen hat, kann das später im laufenden Editor mit dem Befehl user-init-file prüfen — die genaue Bedien-Notation erklären wir im Kapitel zur Tasten-Notation.
Daemon und emacsclientw
Auch unter Windows kann Emacs als Hintergrund-Daemon laufen. Neue Frames hängen sich dann per emacsclientw.exe in den Daemon ein und öffnen in Millisekunden — die Konfiguration ist bereits geladen, kein Neustart-Aufwand.
# Daemon im Hintergrund starten
emacs --daemon
# Neuen GUI-Frame aufrufen (emacsclientw blockiert die Konsole nicht)
emacsclientw.exe -c
# Frame öffnen und eine Datei darin anzeigen
emacsclientw.exe -c -n "C:\Projekte\hello.txt"Wer den Daemon dauerhaft im Hintergrund halten will, legt eine Auto-Start-Verknüpfung auf emacs --daemon im Windows-Autostart-Ordner an oder richtet eine Geplante Aufgabe zur Anmeldung ein. Das Detail-Setup gehört in das spätere Kapitel Daemon und emacsclient; auf dieser Seite reicht das Wissen, dass der Modus existiert und sich mit emacs --daemon einmalig testen lässt.
Häufige Stolperfallen
HOME nicht gesetzt — init.el liegt am unerwarteten Ort
Ohne gesetzte HOME-Variable sucht Emacs die Konfiguration unter %APPDATA%\.emacs.d\ — also irgendwo unter C:\Users\<name>\AppData\Roaming\. Wer seine init.el im Benutzer-Verzeichnis erwartet, sucht dort vergebens. Setze HOME als allerersten Schritt nach der Installation, dann verhält sich Emacs wie auf Unix.
Antivirus und Defender bremsen .elc und Native-Comp drastisch
Emacs erzeugt beim Start und bei der ersten Nutzung vieler Pakete kompilierte Elisp-Dateien (.elc) und, bei aktiver Native-Compilation, zusätzlich .eln-Dateien. Echtzeit-Scanner prüfen jede dieser Dateien — das kann den ersten Start spürbar verlangsamen. Die saubere Lösung: in der Defender- oder Antivirus-Konfiguration eine Ausnahme für den Emacs-Installations- und den Cache-Ordner (~/.emacs.d/eln-cache/) hinterlegen.
Native-Compilation braucht eine GCC-Toolchain
Damit libgccjit Elisp zu nativem Code übersetzen kann, muss eine passende GCC-Toolchain erreichbar sein. Die offiziellen Builds von gnu.org bringen die nötigen DLLs meist bereits mit; bei einem MSYS2-Setup übernimmt pacman das automatisch. Falls native-comp trotzdem schweigt, liefert die Funktion native-comp-available-p im laufenden Editor die Antwort — wir kommen darauf im Konfigurations-Kapitel zurück.
Pfade in Elisp immer mit Forward-Slashes
Emacs und Elisp nutzen intern Unix-Style-Pfade — auch unter Windows. Statt C:\Users\michael\notes schreibst du in der init.el C:/Users/michael/notes. Einfache Backslashes funktionieren als Escape-Sequenzen und führen zu schwer zu findenden Fehlern. Wer ganz sichergehen will, nutzt die Helfer expand-file-name und file-name-as-directory.
Zeilenenden — CRLF, LF und gemischte Dateien
Windows-Programme erzeugen üblicherweise CRLF-Zeilenenden, viele Cross-Plattform-Projekte erwarten LF. Emacs erkennt und respektiert beim Öffnen das vorhandene Format und zeigt es in der Modeline ((DOS) oder (Unix)) an. Beim Erzeugen neuer Dateien greift der Default des aktuellen Buffers — wer plattformübergreifend arbeitet, setzt projektweise eine bewusste Coding-System-Konvention.
Deutsche Sonderzeichen in Pfaden
Pfade mit Umlauten (ä, ö, ü) oder Leerzeichen funktionieren, sind aber eine Quelle subtiler Probleme — vor allem bei externen Tools wie git, ripgrep oder aspell, die Emacs als Subprozess aufruft. Empfehlung: das Konfigurations-Verzeichnis (HOME) in einem kurzen, ASCII-only-Pfad ohne Leerzeichen halten, etwa C:\Users\michael\ direkt.
runemacs.exe vs. emacs.exe — bewusst wählen
Beide starten dieselbe GUI. runemacs.exe ist ein dünner Wrapper, der ohne das anhängende Konsolen-Fenster auskommt — sauber für Desktop-Verknüpfungen. emacs.exe behält das Konsolen-Fenster offen, was beim Debuggen von Start-Fehlern und Daemon-Problemen unbezahlbar ist. Für den Alltag runemacs.exe, für die Fehlersuche emacs.exe.
PGTK gibt es auf Windows nicht
Aus der Linux-Welt kennt man PGTK-Builds (Pure-GTK, Wayland-freundlich). Unter Windows ist PGTK schlicht nicht relevant — der Windows-Build nutzt die native Win32-GUI direkt. Wer auf Tutorials trifft, die zu einem PGTK-Build raten, hat versehentlich eine Linux-Anleitung erwischt.
Weiterführende Ressourcen
Externe Quellen
- GNU Emacs Download — offizielle Download-Seite mit Verweis auf alle Windows-Builds.
- GNU-FTP — Emacs für Windows — direktes Verzeichnis mit Installer, ZIP und Signaturen.
- Chocolatey: Emacs — Paket-Definition, Versionen und Maintainer-Notes.
- Scoop Extras: emacs — aktuelles Scoop-Manifest mit Versions-Auto-Update.
- MSYS2 — mingw-w64-emacs — Paket-Übersicht für UCRT64- und MINGW64-Varianten.
- winget-pkgs: GNU.Emacs — Microsofts Manifest mit ID-Historie.