Was ist das Emacs-Äquivalent von vi dd? Ich möchte die aktuelle Zeile löschen. Versucht CTRL+, kaber es wird nur von der aktuellen Position gelöscht .
122
C-a # Go to beginning of line
C-k # Kill line from current point
Es gibt auch
C-S-backspace # Ctrl-Shift-Backspace
was aufruft M-x kill-whole-line
.
Wenn Sie eine andere globale Schlüsselbindung festlegen möchten, fügen Sie diese in ~ / .emacs ein:
(global-set-key "\C-cd" 'kill-whole-line) # Sets `C-c d` to `M-x kill-whole-line`
Wenn Sie mehrere ganze Zeilen löschen möchten, können Sie dem Befehl eine Nummer voranstellen:
C-u 5 C-S-backspace # deletes 5 whole lines
M-5 C-S-backspace # deletes 5 whole lines
C-u C-S-backspace # delete 4 whole lines. C-u without a number defaults to 4
C-u -5 C-S-backspace # deletes previous 5 whole lines
M--5 C-S-backspace # deletes previous 5 whole lines
Manchmal finde ich auch C-x z
hilfreich:
C-S-backspace # delete 1 whole line
C-x z # repeat last command
z # repeat last command again.
# Press z as many times as you wish.
# Any other key acts normally, and ends the repeat command.
C-x z
, das ist echt cool. Und übrigens eine nette und präzise Antwort.C-k C-k
was irgendwie wie eind$ S-j
in vim funktioniert , aber dies kann Zeilen vorwärts ziemlich gut löschen.C-cd
?Für den Fall, dass Sie die Zeile nicht beenden möchten (wodurch sie in die Zwischenablage des Betriebssystems eingefügt und der Ring beendet wird), sondern einfach löschen:
quelle
Eine andere Methode, um die Zeile zu löschen, ohne sie in den Kill Ring zu legen:
Dadurch bleibt der Punkt am Anfang einer leeren Zeile. Um dies ebenfalls zu beseitigen, möchten Sie möglicherweise etwas wie
(delete-blank-lines)
das Ende der Funktion hinzufügen , wie in diesem Beispiel, das möglicherweise etwas weniger intuitiv ist:quelle
Der schnellste / einfachste Weg, eine vollständige Linie von einem beliebigen Punkt der Linie aus zu löschen (zu töten), ohne etwas auszuwählen, ist:
Es ist vielseitig einsetzbar, um ausgewählte Elemente oder standardmäßig eine Zeile zu löschen, wenn nichts ausgewählt ist.
Angesichts der Frage sind Sie wahrscheinlich auch daran interessiert, Vims "Ruck" zu replizieren
yy
(obwohl in Emacs Sprache ein "Ruck" verwirrenderweise Vims "Put" istp
). Das ist:Schön und kongruent und ziemlich leicht zu merken. Sogar etwas ähnlich wie bei Vim
i_CTRL-W
.Sobald Sie etwas mit einem der oben genannten Punkte in den Kill-Ring gelegt haben, möchten Sie es wahrscheinlich "ziehen" (einfügen):
(Beachten Sie, dass CS-Backspace in Terminal-Emacs möglicherweise nicht funktioniert.)
quelle
Anstatt einen separaten Schlüssel zum Löschen der Zeile zu haben oder ein Präfixargument aufzurufen. Sie können die Crux-Smart-Kill-Linie verwenden, die "bis zum Ende der Linie tötet und beim nächsten Anruf die ganze Linie tötet". Aber wenn Sie es vorziehen ,
delete
stattkill
, können Sie den Code unten verwenden.Für Point-to-String-Operationen (Kill / Delete) empfehle ich die Verwendung von Zop-to-Char
Quelle
quelle