Mit fünf Kill-Befehlen deckt Emacs 95 % aller Schneide-Aktionen ab: Zeile, Wort vorwärts, Wort rückwärts, Region und Region-Kopieren. Wer diese fünf in der linken Hand hat und C-y plus M-y in der rechten, hat das tägliche Edit-Repertoire komplett. Dieser Artikel zeigt jeden Befehl mit Cursor-Verhalten, Prefix-Argumenten und praktischen Workflows — und ergänzt die fünf um die Spezialisten M-z, M-k und C-M-k, die in bestimmten Situationen den Unterschied machen.
C-k — kill-line: die Zeile killen
Der mit Abstand häufigste Kill-Befehl in Emacs. Statt einer Taste „Zeile löschen" arbeitet C-k kontextabhängig — was zunächst irritiert, sich aber nach wenigen Stunden als sehr ergonomisch herausstellt.
- C-k —
kill-line— vom Cursor bis Zeilenende - Alternativ über den Befehlsnamen: M-x kill-line
Drei Cursor-Positionen, drei Verhalten
| Cursor-Position | Wirkung von C-k |
|---|---|
| Mitten in der Zeile | killt vom Cursor bis zum Zeilenende (Newline bleibt stehen) |
| Am Zeilenende | killt das Newline — die nächste Zeile rutscht hoch |
| Am Zeilenanfang | killt den Zeileninhalt; ein zweites C-k killt das Newline |
Anders gesagt: eine „leere Zeile entfernen" erfordert mit Default-Einstellungen oft zwei C-k — eines für den Inhalt, eines für das Newline. Wer das als unintuitiv empfindet, dreht den Schalter um (siehe weiter unten).
Prefix-Argumente: mehrere Zeilen auf einmal
C-k reagiert auf Prefix-Argumente — das ist eines der häufigsten Beispiele, an dem das Emacs-Konzept der numerischen Argumente sichtbar wird.
| Eingabe | Wirkung |
|---|---|
| C-u 5 C-k | killt fünf komplette Zeilen inkl. Newlines ab Cursor-Position |
| C-u 0 C-k | killt rückwärts vom Cursor bis Zeilenanfang |
| C-u - 2 C-k | killt zwei vorangehende Zeilen plus den Rest vor dem Cursor |
Besonders C-u 0 C-k ist im Alltag Gold wert — es ist die kompakte Form von „weg mit allem links vom Cursor bis zum Zeilenanfang", ohne die Region aufspannen zu müssen.
Konfig-Tipp: kill-whole-line
Wer das Newline-Verhalten loswerden will, setzt eine einzige Variable. Danach killt C-k am Zeilenanfang die ganze Zeile inklusive Newline in einem Rutsch:
;; C-k killt am Zeilenanfang die ganze Zeile inkl. Newline.
;; Mitten in der Zeile bleibt das Verhalten unverändert (bis Zeilenende).
(setq kill-whole-line t)Wohin das Snippet gehört, erklärt der Artikel init.el und early-init.el im Detail — kurz: in die persönliche Init-Datei unter ~/.config/emacs/init.el (bzw. ~/.emacs.d/init.el).
M-d und M-DEL — Wörter killen
Wort-Kills sind im Editier-Alltag die unmittelbarste Form von „dieses Stück Text wieder weg". Emacs trennt sauber zwischen vorwärts und rückwärts — entsprechend gibt es zwei Befehle.
- M-d —
kill-word— vom Cursor bis Wortende vorwärts - M-DEL —
backward-kill-word— vom Cursor bis Wortanfang rückwärts - Befehlsnamen: M-x kill-word, M-x backward-kill-word
Was zählt als „Wort"?
Was Emacs als Wort behandelt, hängt vom Major-Mode ab. In Text-Modes sind das die üblichen Wortgrenzen (Whitespace, Satzzeichen). In Programmier-Modes gehören Unterstriche und teilweise Bindestriche oft mit zum Wort — kill_word zählt dann als ein einziges Wort. Die genauen Regeln stehen in der syntax-table des jeweiligen Modes; der Artikel Zeichen, Wort, Zeile zeigt die Navigations-Seite des gleichen Themas.
M-DEL und die Backspace-Stolperfalle
M-DEL heißt in der Emacs-Notation „Meta + Backspace" — auf den meisten Tastaturen also Alt+Backspace bzw. Option+Backspace. Wichtig: DEL in Emacs ist immer Backspace, nicht die Entf-Taste oben rechts. Auf manchen macOS-Builds muss die Backspace-Taste explizit als „Delete-Backwards" interpretiert werden, sonst greift M-DEL ins Leere. Im Zweifel über C-h k testen, was Emacs für die Tastenkombination einliest.
Prefix-Argumente
Beide Befehle akzeptieren ein numerisches Prefix. C-u 3 M-d killt drei Wörter vorwärts; C-u 3 M-DEL drei Wörter rückwärts. Negative Argumente drehen die Richtung um — M-- M-d wirkt also wie M-DEL.
C-w und M-w — Region killen und kopieren
Sobald eine Region aktiv ist (siehe Region und Mark), übernehmen zwei Befehle: einer zerschneidet, einer kopiert. Semantisch sind das die Pendants zu „Cut" und „Copy" in anderen Editoren — nur dass Emacs sie eben „Kill" und „Save" nennt.
- C-w —
kill-region— Region in den Kill-Ring, aus dem Buffer entfernen - M-w —
kill-ring-save— Region in den Kill-Ring, im Buffer behalten (Copy) - Befehlsnamen: M-x kill-region, M-x kill-ring-save
Verhalten ohne aktive Region
Ohne aktive Region meldet C-w einen Fehler in der Echo-Area: „The mark is not set now, so there is no region". Das ist Absicht — Emacs schützt davor, versehentlich Inhalt zu killen, dessen Grenzen unklar sind.
Die populäre 5-Zeilen-Customization umgeht das eleganter: wenn keine Region aktiv ist, soll C-w einfach die aktuelle Zeile killen. So bekommt man ein VS-Code-artiges „Cut Line" geschenkt:
;; Wenn keine Region aktiv ist, killt C-w die ganze Zeile.
;; Mit aktiver Region funktioniert C-w wie gewohnt.
(defun my/kill-region-or-line (beg end)
"Kill region if active, otherwise kill the current line."
(interactive
(if (use-region-p)
(list (region-beginning) (region-end))
(list (line-beginning-position) (line-beginning-position 2))))
(kill-region beg end))
(global-set-key (kbd "C-w") #'my/kill-region-or-line)Mit dieser kleinen Funktion fühlt sich Emacs für Einsteiger sofort vertrauter an — Profis greifen ohnehin auf explizite Region-Auswahl zurück.
M-w: kopieren ohne Region-Verlust
M-w lässt die Region nach dem Kopieren aktiv (visuell hervorgehoben deaktiviert sich, aber mark steht weiter). Das ist praktisch, wenn man denselben Bereich mehrfach kopieren oder direkt danach kommentieren will. Bei vielen Configs blinkt der kopierte Bereich kurz auf — das macht das Paket pulse.el, das in Emacs 29+ standardmäßig dafür benutzt wird.
Weitere Kill-Befehle: Satz, Sexp, Zap
Neben den fünf Kern-Befehlen kennt Emacs eine Handvoll Spezialisten. Sie sind nicht für jeden Tag — wer sie aber kennt, spart in den richtigen Momenten Tastendrücke.
| Tastenkombi | Befehl | Wirkung |
|---|---|---|
| M-z <char> | zap-to-char | killt vom Cursor bis zum nächsten Vorkommen eines Zeichens (inkl.) |
| M-x zap-up-to-char | zap-up-to-char | killt bis zum Zeichen, OHNE das Zeichen selbst |
| M-k | kill-sentence | killt vom Cursor bis Satzende vorwärts |
| C-x DEL | backward-kill-sentence | killt vom Cursor bis Satzanfang rückwärts |
| C-M-k | kill-sexp | killt einen Sexp / Klammer-Ausdruck (Lisp, JSON, code-affine Modes) |
zap-to-char in Praxis
M-z . killt vom Cursor bis zum nächsten Punkt einschließlich des Punkts — perfekt für „den nächsten Satz und das Satzzeichen weg, in einem Schritt". M-z , analog bis zum nächsten Komma. Mit Prefix-Argument wird das n-te Vorkommen Ziel: C-u 2 M-z . killt bis zum zweiten Punkt.
zap-up-to-char (kein Default-Binding) verhält sich genauso, lässt das Zielzeichen aber stehen. Wer das oft braucht, bindet es z. B. auf M-Z:
;; M-Z (großes Z): killt bis zum Zeichen, lässt es aber stehen.
(global-set-key (kbd "M-Z") #'zap-up-to-char)kill-sexp: Klammer-Ausdrücke killen
In code-lastigen Modes (Lisp, JavaScript, JSON, Python …) killt C-M-k einen kompletten ausbalancierten Ausdruck: das Wort vor dem Cursor, eine Liste, einen String inklusive Anführungszeichen, einen ganzen Block. Steht der Cursor vor (let ((x 1)) x), killt ein C-M-k exakt diesen Ausdruck. Das spart in Code-Refactorings enorm Tastendrücke — und es ist der Befehl, den man in Lisp-Modi nach einer Stunde nicht mehr missen will.
Yank und Yank-Pop in der Praxis
Killen ohne Wiedereinfügen wäre nur die halbe Geschichte. Das Konzept des Kill-Rings ist im Vorgänger-Artikel Kill-Yank-Konzept ausführlich erklärt — hier nur die Praxis-Befehle, die jeder Kill-Workflow braucht.
- C-y —
yank— vordersten Kill-Ring-Eintrag einfügen - M-y —
yank-pop— direkt nach C-y: durch frühere Einträge cyclen - Befehlsnamen: M-x yank, M-x yank-pop
Die zwei wichtigsten Yank-Varianten
| Eingabe | Wirkung |
|---|---|
| C-y | yank vor den Cursor, Cursor landet HINTER dem eingefügten Inhalt |
| C-u C-y | yank, Cursor landet VOR dem eingefügten Inhalt (Mark steht hinter dem Text) |
| C-y M-y | yank, dann durch ältere Kill-Ring-Einträge cyclen |
Der einzige zwingende Punkt bei M-y: er funktioniert nur unmittelbar nach einem C-y (oder einem weiteren M-y). Aus dem Stand getippt — also ohne vorheriges Yank — meldet er „Previous command was not a yank". Wer eine bequemere Kill-Ring-Auswahl will, verlinkt mit consult-yank-pop aus dem Consult-Paket: dort öffnet sich ein Minibuffer mit Live-Preview aller Einträge.
Die Kill-Befehle im Vergleich
Diese Tabelle ist die Cheat-Sheet-Sektion: alle Befehle der vorherigen Sektionen auf einen Blick, sortiert nach Reichweite. Die Spalte „Richtung" zeigt, ob der Befehl ab Cursor vorwärts (→), rückwärts (←) oder symmetrisch über eine Region (↔) wirkt.
| Tastenkombi | Befehl | Reichweite | Richtung |
|---|---|---|---|
| M-d | kill-word | ein Wort | → |
| M-DEL | backward-kill-word | ein Wort | ← |
| M-k | kill-sentence | ein Satz | → |
| C-x DEL | backward-kill-sentence | ein Satz | ← |
| M-z <char> | zap-to-char | bis zum Zeichen (inkl.) | → |
| C-k | kill-line | bis Zeilenende | → |
| C-u 0 C-k | kill-line (Prefix 0) | bis Zeilenanfang | ← |
| C-u N C-k | kill-line (Prefix N) | N Zeilen | → |
| C-M-k | kill-sexp | ein Klammer-Ausdruck | → |
| C-w | kill-region | aktive Region | ↔ |
| M-w | kill-ring-save | aktive Region (Copy) | ↔ |
| C-y | yank | Einfügen | — |
| M-y | yank-pop | Kill-Ring cyclen | — |
Die Spalte „Befehl" ist gleichzeitig der Name für M-x — jeder dieser Shortcuts hat einen ausgeschriebenen Befehl, den man auch ohne Tastenkombi aufrufen oder in eigenen Funktionen verwenden kann.
Praktische Workflows
Die Befehle entfalten ihre Stärke in Kombination. Fünf Mini-Workflows, die im Editor-Alltag täglich vorkommen — und die zeigen, warum die Emacs-Kill-Befehle in Summe schneller sind als jedes „markieren und Backspace".
„Eine Zeile durch eine andere ersetzen"
C-a C-k bringt den Cursor an den Zeilenanfang und killt die ganze Zeile (mit kill-whole-line t auch inkl. Newline). Direkt danach den neuen Text tippen. Drei Tastendrücke, kein Maus-Markieren, keine Region.
„Letztes Wort wieder weg"
M-DEL. Wer das vor jedem Wort als Reflex hat, tippt im Schnitt 30 % schneller — weil man nicht mehr lange überlegt, ob der Halbsatz so passt, sondern einfach weiter schreibt und Falsches sofort zurücknimmt.
„Region duplizieren"
M-w kopiert die markierte Region, C-y fügt sie sofort dahinter wieder ein. Zwei Befehle, ein Duplikat — die idiomatische Form von „Cmd+D" aus anderen Editoren.
„Drei Zeilen umlagern"
C-u 3 C-k killt drei komplette Zeilen, dann mit Navigation an die neue Stelle, dort C-y. Funktioniert für beliebige Block-Größen — bei umfangreicheren Verschiebungen lohnt sich aber meist die explizite Region mit C-w.
„Bis zum nächsten Komma killen"
M-z ,. Mitten im Refactoring von Funktions-Signaturen oder Listen unschlagbar — schneller als jede Region-Markierung, weil das Ziel das Zeichen ist, nicht eine Position. Für Punkt analog M-z ., für Klammer M-z ).
FAQ
Warum kann ich nicht mit Cmd+X schneiden auf macOS?
Vanilla-Emacs ignoriert Cmd standardmäßig — der Default-Cut-Befehl ist C-w. Wer Cmd+X will, muss mac-command-modifier auf super setzen und dann ein eigenes Binding (global-set-key (kbd "s-x") #'kill-region) ergänzen. Details zur Modifier-Belegung stehen im Artikel zur Tasten-Notation.
Warum tut C-k zweimal etwas anderes als erwartet?
Beim Cursor am Zeilenende killt das erste C-k das Newline (die nächste Zeile rutscht hoch), erst das zweite killt deren Inhalt. Mit (setq kill-whole-line t) wird das Verhalten einheitlicher: am Zeilenanfang killt C-k immer die ganze Zeile inkl. Newline in einem Schritt.
Wie kill ich VOR dem Cursor bis Zeilenanfang?
C-u 0 C-k. Das Prefix-Argument 0 invertiert die Richtung von kill-line — alles links vom Cursor auf der aktuellen Zeile wandert in den Kill-Ring.
C-w wirft Fehler — was tun?
Die Region ist nicht aktiv. Erst C-SPC drücken, an die andere Region-Grenze navigieren, dann C-w. Alternativ die im Artikel gezeigte 5-Zeilen-Customization einbauen, damit C-w ohne Region die aktuelle Zeile killt.
M-y tut nichts, was mache ich falsch?
yank-pop funktioniert nur DIREKT nach C-y oder nach einem weiteren M-y. Aus dem Stand getippt — also ohne vorheriges Yank — meldet Emacs „Previous command was not a yank". Workaround: M-x yank-pop über den Befehlsnamen funktioniert ebenfalls nur mit Vorgänger-Yank; für freie Kill-Ring-Auswahl consult-yank-pop oder browse-kill-ring nutzen.
Wie kill ich CamelCase-Wörter einzeln?
Mit subword-mode aktivieren — danach behandelt Emacs getElementById als drei Wörter (get, Element, ById). M-d killt dann nur den jeweiligen Teil. Aktivieren mit M-x subword-mode pro Buffer oder global über (global-subword-mode 1) in der init.el.
Kann ich Zeilen mit M-d nach unten löschen?
Nein — M-d ist wortweise und stoppt am Zeilenende. Für Zeilen ist C-k der richtige Befehl, mit Prefix-Argument C-u N C-k für mehrere Zeilen am Stück.
Weiterführende Ressourcen
Externe Quellen
- GNU Emacs Manual — Killing by Lines — offizielle Definition von
kill-line, Prefix-Verhalten undkill-whole-line. - GNU Emacs Manual — Other Kill Commands — Referenz für
kill-word,kill-region,kill-ring-save,zap-to-char,kill-sentence,kill-sexp. - GNU Emacs Manual — Words — was Emacs als Wort behandelt und wie
subword-modedas ändert.