Die unterste Zeile von Emacs sieht aus wie ein einziger schmaler Streifen am Fenster-Boden — und genau das ist sie auch. Was den Einstieg trotzdem oft erschwert: hinter dieser einen Zeile stecken zwei völlig verschiedene Konzepte. Mal ist sie die Echo-Area, die Meldungen anzeigt; mal ist sie der Minibuffer, der eine Eingabe von dir erwartet. Beide nutzen denselben Platz, verfolgen aber unterschiedliche Zwecke und reagieren unterschiedlich auf deine Tasten. Wer das nicht trennt, landet schnell in dem klassischen „warum reagiert Emacs nicht?"-Moment — ein offener Minibuffer fängt nämlich jede weitere Tastenfolge ab, bis er bestätigt oder abgebrochen wird. Dieser Artikel macht den Unterschied klar und zeigt die Bedien-Patterns drumherum.

Echo-Area: die Status-Zeile

Die Echo-Area ist Emacs' Sprachrohr nach außen. Sie liegt am unteren Rand jedes Frames und zeigt im Ruhezustand kurze, nicht-interaktive Meldungen an. Typische Beispiele:

  • Wrote /Users/du/notiz.txt nach dem Speichern,
  • Mark set nach dem Setzen einer Markierung,
  • No more matches am Ende einer Suche,
  • die Echo unvollständiger Tastenfolgen — wenn du C-x drückst und kurz wartest, erscheint dort C-x-, damit du weißt, dass Emacs auf die nächste Taste lauert.

Diese Meldungen sind reine Anzeige. Du kannst sie nicht anklicken, nicht editieren und nicht „bestätigen" — sie verschwinden entweder nach kurzer Zeit von selbst oder werden vom nächsten Befehl überschrieben. Schematisch sieht das Fenster-Layout am Boden so aus:

text Echo-Area am Fenster-Boden
+-----------------------------------------------------------+
|                                                           |
|   Buffer-Bereich                                          |
|   (Cursor, Inhalt, Scrolling)                             |
|                                                           |
+-----------------------------------------------------------+
| -UUU:----F1  notiz.txt   Top L1   (Text) ---              |  ← Modeline
+-----------------------------------------------------------+
| Wrote /Users/du/notiz.txt                                 |  ← Echo-Area
+-----------------------------------------------------------+

Wichtig: Die Echo-Area ist nicht Teil des aktiven Buffers. Sie gehört zum Frame und ist immer da, auch wenn das Fenster geteilt ist und du mehrere Buffer parallel siehst. Wer sie als „Statuszeile von Emacs" liest, liegt nicht ganz falsch — sie ist die einzige UI-Region, die quer über alle Fenster informiert.

Wird eine Meldung länger als eine Zeile, wächst die Echo-Area kurzzeitig nach oben, um den ganzen Text zu zeigen. Bei mehrzeiligen Texten reicht das aber nicht immer — die vollständige Fassung landet dann im *Messages*-Buffer, den wir in Sektion 07 noch separat ansehen.

Minibuffer: der temporäre Eingabe-Buffer

Sobald Emacs eine Eingabe von dir braucht — einen Dateinamen, einen Befehlsnamen, eine Bestätigung, einen Suchbegriff — verwandelt sich dieselbe Zeile in den Minibuffer. Technisch ist das ein eigenständiger Buffer mit Cursor, Mark und allen üblichen Edit-Befehlen; optisch teilt er sich nur den Platz mit der Echo-Area.

Ein Minibuffer-Prompt besteht aus zwei Teilen: einem Prompt-Text links (den Emacs gestellt hat und der nicht editierbar ist) und deiner Eingabe rechts. Drei typische Beispiele:

text Drei typische Minibuffer-Prompts
Find file: ~/projekte/_
M-x save-buffer_
Save buffer notiz.txt? (y or n) _

Der Unterstrich markiert jeweils den Cursor. Alles vor dem Doppelpunkt bzw. der Frage ist Prompt; alles dahinter darfst du tippen, löschen, verschieben, einfügen — der Minibuffer ist ein echter Edit-Buffer, kein primitiver Eingabe-Dialog.

Zwei Tasten beenden jeden Minibuffer-Vorgang:

  • RET bestätigt die Eingabe — Emacs übernimmt, was im Minibuffer steht.
  • C-g bricht ab — Emacs verwirft die Eingabe, der Minibuffer schließt sich, und in der Echo-Area erscheint kurz Quit.

Wer aus modernen Editoren kommt, denkt bei „Eingabe-Zeile" oft an einen modalen Dialog, der den Editor blockiert. Der Minibuffer ist beides und keins davon: blockierend ist er insofern, dass er die nächste Tasten-Eingabe an sich zieht — aber er ist eben ein vollwertiger Buffer, kein passives Feld.

Eingabe-Hilfen im Minibuffer

Der Minibuffer ist nicht nur ein Tipp-Feld, sondern eine kleine Arbeitsumgebung mit eigenen Tastenkombinationen. Die wichtigsten sind in Vanilla-Emacs überall verfügbar, sobald ein Prompt aktiv ist:

TasteWirkung
TABversucht, die aktuelle Eingabe zu vervollständigen (Completion)
SPCWort-Completion bei Datei- und Befehlsnamen — füllt bis zum nächsten Trenner
?öffnet einen *Completions*-Buffer mit allen passenden Kandidaten
M-pvorheriger Eintrag aus der History dieses Prompt-Typs
M-nnächster Eintrag aus der History (vorwärts in Richtung jüngere Eingaben)
C-/Undo — auch im Minibuffer selbst
RETEingabe bestätigen
C-gEingabe abbrechen

Zwei Punkte, die häufig überraschen:

  • SPC tippt nicht immer ein Leerzeichen. Bei Dateinamen- und Befehlsnamen-Prompts ist Leerzeichen als Completion-Trigger belegt; wer es als echtes Leerzeichen braucht (etwa in M-x bei einem Befehl, dessen Name kein Leerzeichen enthält, das aber auch kein Trigger wäre), tippt es mit C-q SPC (quoted-insert). In Such-Prompts dagegen verhält sich SPC wie ein normales Zeichen.
  • ? ist nicht überall „Hilfe". Im Minibuffer öffnet es die Completion-Liste, in normalen Buffers ist es ein normales Fragezeichen. Das ist konsistent: Im Minibuffer geht es immer um die Auswahl eines Werts, nirgendwo sonst.

Diese Defaults stammen aus dem klassischen Emacs-Setup. Moderne Completion-Pakete wie Vertico, Ivy oder das eingebaute fido-mode überschreiben sie teils — sie ändern aber die Grundlogik nicht, sondern erweitern sie um Inkrementelles Filtering und bessere Anzeige.

History pro Prompt-Typ

Eine der unterschätztesten Stärken des Minibuffers ist seine History: Emacs merkt sich, was du in den verschiedenen Prompts eingegeben hast, und gibt dir die Einträge mit M-p (zurück) und M-n (vorwärts) zurück. Entscheidend ist dabei: Die History wird pro Prompt-Typ getrennt geführt — Dateinamen liegen in einer anderen Liste als Befehlsnamen, Suchbegriffe in einer dritten, ausgewertete Lisp-Expressions in einer vierten.

Prompt-TypBeispiel-AufrufHistory-Variable
DateinamenC-x C-ffile-name-history
BefehlsnamenM-xextended-command-history
Inkrementelle SucheC-sregexp-search-ring, search-ring
query-replaceM-%query-replace-history
Lisp-AuswertungM-:read-expression-history
Buffer-WechselC-x bbuffer-name-history

In der Praxis heißt das: Wenn du C-x C-f drückst und im leeren Minibuffer M-p tippst, springst du zur zuletzt geöffneten Datei. Drückst du dagegen M-x und dann M-p, bekommst du den zuletzt ausgeführten Befehl. Die Listen mischen sich nie. Das macht History deutlich nützlicher als ein globales „Letztes" eines Editor-Frameworks, weil die Treffer immer kontext-passend sind.

Wer ein Pattern in der History wiederfinden will, statt durch sie zu blättern, nimmt M-r (previous-matching-history-element) und gibt eine Regex ein. Auch das ist pro Prompt-Typ getrennt — die Suche läuft immer nur in der jeweiligen History.

Die History überlebt den Editor-Neustart standardmäßig nicht. Wer sie persistieren will, aktiviert savehist-mode:

elisp init.el — History über Restarts speichern
;; Speichert Minibuffer-History in ~/.emacs.d/history
(savehist-mode 1)

;; Welche zusätzlichen Listen ebenfalls mitnehmen
(setq savehist-additional-variables
      '(search-ring
        regexp-search-ring
        kill-ring))

Danach bleibt deine Datei-, Befehls- und Suchhistorie über Sessions hinweg erhalten.

Den Minibuffer verlassen

Ein offener Minibuffer fängt jede Tastenfolge ab, bis du ihn beendest. Das ist die häufigste Quelle für den „Emacs reagiert nicht"-Eindruck — die Tasten landen alle im Minibuffer, nur sieht man das nicht immer auf den ersten Blick. Symptome:

  • C-x C-f scheint nichts zu tun (in Wahrheit tippt es C-x C-f in den aktiven Minibuffer-Prompt).
  • Buchstaben erzeugen nichts im Buffer (sie wandern in die Eingabezeile am Boden).
  • Eine andere Tastenfolge meldet plötzlich Command attempted to use minibuffer while in minibuffer.

Die Auflösung ist immer dieselbe: C-g drücken. Ein einzelnes C-g schließt einen Minibuffer-Vorgang; wenn mehrere ineinander verschachtelt sind (siehe nächste Sektion zu Recursive Edits), drückst du es so oft, bis die Echo-Area wieder leer ist und der normale Buffer wieder Tasten annimmt. Drei C-g hintereinander sind in dieser Situation die übliche Notbremse — sie schaden nie und holen Emacs aus jedem geschachtelten Zustand zurück.

Wer wissen will, ob der Minibuffer gerade aktiv ist, schaut auf die Echo-Area. Steht dort ein Prompt-Text mit Cursor, ist es ein Minibuffer; steht dort eine Meldung ohne Cursor oder ist die Zeile leer, ist es die Echo-Area. Sicht-Indikator ist immer der Cursor: Springt er beim Klick in den Boden des Frames mit, ist dort ein Minibuffer offen.

Recursive Edit

Manche Befehle erlauben es, aus dem Minibuffer heraus in einen vollwertigen Edit-Modus zu wechseln, ohne den Befehl abzubrechen — den sogenannten Recursive Edit. Klassisches Beispiel: Während eines query-replace (M-%) tippst du C-r („recursive edit"). Emacs friert den Replace-Vorgang ein und lässt dich frei im Buffer arbeiten — etwa eine komplexere Stelle von Hand korrigieren, die das Such-Pattern nicht abbildet. Erst wenn du den Recursive Edit verlässt, läuft query-replace an genau dieser Stelle weiter.

Dass du dich in einem Recursive Edit befindest, erkennst du an der Modeline: Der Major-Mode-Name steht dann in eckigen Klammern, etwa [(Text)] statt (Text). Manche Konfigurationen zeigen zusätzlich einen Recursive-Hinweis.

Zwei Tasten beenden den Recursive Edit:

  • C-M-c ruft exit-recursive-edit auf — du verlässt den Recursive Edit „sauber" und der ursprüngliche Befehl läuft weiter.
  • C-] ruft abort-recursive-edit auf — du brichst den umgebenden Befehl ganz ab.

Auf deutscher Tastatur hat C-] einen Haken: ] liegt auf AltGr+9, und AltGr verhält sich auf vielen Layouts intern wie C-M-. Die Folge: C-] ist schlicht nicht direkt erreichbar oder kollidiert mit anderen Bindings (Details dazu im Artikel zur Tasten-Notation). Praktischer Fallback: immer C-M-c zum Verlassen und C-g als generelle Notbremse.

Recursive Edits können sich auch schachteln. Bist du tief drin, hilft mehrfaches C-g oder ein gezieltes M-x mit top-level, das alle laufenden rekursiven Ebenen auf einmal beendet.

Der *Messages*-Buffer

Jede Meldung, die kurz in der Echo-Area aufblitzt, wird parallel in den Spezial-Buffer *Messages* geschrieben. Das ist Emacs' Log für alles, was der Editor von sich gibt — Datei-Operationen, Fehlermeldungen, kleinere Warnungen, Lade-Hinweise beim Start. Wer eine Meldung verpasst hat, weil sie zu schnell verschwunden ist, findet sie dort verlässlich wieder.

Drei Wege führen hin:

MethodeAufrufAnmerkung
Direkter ShortcutC-h eöffnet view-echo-area-messages
Befehl per NamenM-x view-echo-area-messagesidentisch, aber explizit
Buffer-WechselC-x b *Messages* RETklassischer Buffer-Switch

Der Buffer ist read-only und wird im Messages-Buffer-Mode angezeigt — du kannst durchscrollen, suchen (C-s), kopieren, aber nichts versehentlich verändern.

Die Länge des Logs steuert die Variable message-log-max. Default ist 1000, also rund tausend Zeilen Verlauf. Wer mehr behalten will, setzt sie höher; wer das Log komplett deaktivieren möchte, setzt sie auf nil:

elisp init.el — Messages-Log konfigurieren
;; Deutlich mehr Verlauf behalten (5000 statt 1000 Zeilen)
(setq message-log-max 5000)

;; Oder ganz abschalten (nicht empfohlen — kostet kaum Speicher)
;; (setq message-log-max nil)

Praktischer Nebeneffekt: Lange Meldungen, die nicht in die Echo-Area passen, landen ungekürzt im *Messages*-Buffer. Wer also bei einem Befehl eine abgeschnittene Fehlermeldung sieht, schaut dort nach der vollständigen Fassung — meist mit Stacktrace und allen relevanten Details.

Interessantes

Echo-Area und Minibuffer sind verschiedene Konzepte

Beide nutzen dieselbe Zeile am Fenster-Boden, aber die Echo-Area zeigt Meldungen ohne Cursor, der Minibuffer nimmt Eingaben mit Cursor entgegen. Wer den Unterschied sieht, weiß sofort, ob Emacs auf eine Eingabe wartet oder nur etwas mitteilt.

„Emacs reagiert nicht“ heißt fast immer: Minibuffer offen

Tasten landen im Minibuffer, statt im Haupt-Buffer zu wirken. Ein- bis dreimal C-g drücken, bis die unterste Zeile wieder leer ist — danach reagiert alles wie gewohnt.

Verpasste Echo-Meldungen sind im `*Messages*`-Buffer dauerhaft nachlesbar

Jede Meldung wird parallel ins Log geschrieben. Schnellster Weg dorthin: C-h e. Default-Verlauf reicht für rund 1000 Zeilen — bei Bedarf über message-log-max hochsetzen.

Jeder Prompt-Typ hat seine eigene History

M-p zeigt nach C-x C-f zuletzt geöffnete Dateien, nach M-x zuletzt aufgerufene Befehle, nach C-s zuletzt gesuchte Begriffe. Die Listen mischen sich nie — Treffer bleiben immer kontext-passend.

Im Minibuffer kann editiert werden — inklusive Undo

Der Minibuffer ist ein vollwertiger Edit-Buffer mit allen Standard-Tasten: Wort-weise springen, Region markieren, Killring nutzen, sogar C-/ für Undo. Wer den Prompt versehentlich „kaputt getippt" hat, kommt damit zurück.

Recursive Edit ist Feature, nicht Bug

Während eines query-replace kurz frei im Buffer korrigieren und dann den Befehl weiterlaufen lassen — genau dafür gibt es Recursive Edit. Verlassen mit C-M-c, abbrechen mit C-]. Klammern um den Major-Mode in der Modeline signalisieren, dass du gerade in einer rekursiven Ebene bist.

Auf deutscher Tastatur ist `C-]` schwer erreichbar

Das ] liegt auf AltGr+9, und AltGr verhält sich auf vielen Layouts intern wie C-M-. Praktischer Fallback zum Verlassen rekursiver Ebenen: immer C-M-c nehmen, und bei totaler Verzweiflung C-g mehrmals drücken.

`SPC` im Minibuffer ist nicht immer ein Leerzeichen

Bei Datei- und Befehlsnamen-Prompts wirkt SPC als Wort-Completion. Echte Leerzeichen erzwingt man mit C-q SPC (quoted-insert). In Such-Prompts dagegen verhält sich SPC ganz normal.

Weiterführende Ressourcen

Externe Quellen

Verwandte Artikel

/ Weiter

Zurück zu Bedienkonzept

Zur Übersicht