Ich extrahiere häufig ein Textrechteck aus einem Puffer, finde dann aber heraus, dass ich den Text ziehen möchte, als wäre es kein Rechteck. Gibt es eine Möglichkeit, das aktuell getötete Rechteck zum Tötungsring hinzuzufügen?
Das GNU Emacs-Handbuch enthält Folgendes:
Ein Rechteck zu „töten“ bedeutet nicht, im üblichen Sinne zu töten. Das Rechteck wird nicht im Kill-Ring gespeichert, sondern an einem speziellen Ort, an dem nur das zuletzt getötete Rechteck aufgezeichnet wird. Dies liegt daran, dass sich das Ziehen eines Rechtecks so stark vom Ziehen von linearem Text unterscheidet, dass verschiedene Ruckbefehle verwendet werden müssen. Yank-Popping ist für Rechtecke nicht definiert.
Grundsätzlich kann ich jedoch das gewünschte Verhalten erzielen
M->
Gehe zum Ende des PuffersC-x r y
Ruck RechteckC-x C-x
Austauschpunkt und Markierung (wählt neu gezogene Linien aus)C-w
töte die Auswahl zum Kill Ring
Gibt es eine bessere Möglichkeit, ein getötetes Rechteck in einen Kill-Ring-Eintrag zu verwandeln?
Antworten:
Wenn ich Ihre Frage verstanden habe, suchen Sie nach so etwas:
Mit freundlicher Genehmigung von ErgoEmacs
quelle
Sie sind sich nicht sicher, was das Besondere am Rechteck im Kill-Ring ist, aber wenn Sie auf Emacs-24.4 aktualisieren, können Sie Folgendes tun:
C-x SPC .... M-w
Wählen Sie ein Rechteck aus und platzieren Sie es auf dem Kill-Ring. DanachC-y
wird das Rechteck gezogen (im selben war dasC-x r y
auch).quelle
Ich war anfangs verärgert über das Fehlen einer integrierten Lösung für dieses Problem und stellte dann fest, dass es eine integrierte Lösung gab: Kill-Rechteck.
Angenommen, Sie haben Text wie
Aber wollen Sie den 'B'-Teil des Textes woanders, wie zwischen diesen C- und D-Zeilen:
Wenn Sie das B-Rechteck (
C-x r M-w
) kopieren und dann den Punkt auf das erste 'D' setzen und dann das Rechteck zurückziehen (C-x r y
), erhalten Sie am Endewo du wirklich wolltest
Es mag natürlich erscheinen, das Rechteck von 'B' zu kopieren und an die neue Position zu ziehen, aber eine bessere Lösung besteht darin, einfach die Linien 'A' und 'B' zu kopieren und sie in ihrer Gesamtheit zwischen 'C' und 'zu ziehen. D 'Linien.
Markieren Sie dann das Rechteck mit den 'A' und verwenden Sie
kill-rectangle
(C-x r k
), um mit dem gewünschten Ergebnis zu enden.quelle