Wie überschreibe ich ein kopiertes Rechteck, anstatt es einzufügen (was das Standardverhalten von Ruck-Rechtecken ist)?

8

Nachdem Sie ein "Rechteck" mit kopiert haben C-x r M-w, C-x r yziehen oder ziehen Sie das Rechteck ein. Damit wird jedoch das kopierte Rechteck eingefügt.

Wie kann ich das kopierte Rechteck einfügen, damit es den Text überschreibt?

Beispiel:

 a b c d e f g
 h i j k▮l m n
 o p q r s t u▮

Ich habe das Rechteck zwischen den oben gezeigten Cursorpositionen mit M-x copy-rectangle-as-killoder kopiert C-x r M-w.

Wenn ich es jetzt hmit M-x yank-rectangleoder vor das Zeichen einfüge C-x r y, soll das Ergebnis so aussehen

 a b c d e f g
▮l m n k l m n
 s t u r s t u

anstatt

 a b c d e f g
▮l m n h i j k l m n
 s t u o p q r s t u

Wie kann ich das yank-rectangleÜberschreiben vornehmen ?

Kaushal Modi
quelle
Funktioniert bei mir. Versuchen Sie, Emacs mit dem Flag -Q auszuführen, um die Standardkonfiguration zu verwenden. Wenn das funktioniert, wird es etwas in Ihrer Konfiguration sein.
Colin Bell
Ah! Ich habe fälschlicherweise die umgekehrte Frage gestellt. Ich möchte einen Weg finden, um C-x r yzu überschreiben. Ich bearbeite jetzt meine Frage.
Kaushal Modi

Antworten:

8

Verwenden Sie M-x picture-mode. C-c C-y, gebunden an befehl picture-yank-rectangle, macht was du willst. (Sie können verwenden, C-_um rückgängig zu machen.)

Diese zugehörigen Schlüssel sind auch verfügbar in picture-mode:

  • C-c C-k- Lösche ein Rechteck und speichere es ( picture-clear-rectangle)
  • C-c C-w- Lösche ein Rechteck und speichere es in einem Register ( picture-clear-rectangle-to-register)
  • C-c C-x- Wie C-c C-y, verwendet aber das Rechteck in einem Register ( picture-yank-rectangle-from-register)
  • C-x r r- Kopiere ein Rechteck in ein Register ( copy-rectangle-to-register)

Verwenden Sie C-c C-cdiese Option, um den Bildmodus zu verlassen.

Sie können die Bildmodusbefehle auch verwenden, ohne sie einzuschalten. picture-modeIn diesem Fall sind ihre Tasten jedoch nicht gebunden. Sie müssen die Bibliothek trotzdem laden picture.

So können Sie beispielsweise Folgendes tun:

  1. Verwenden Sie C-x r rdiese Option, um ein Rechteck in ein Register zu kopieren.
  2. Setzen Sie den Cursor an die Stelle, an der Sie das Rechteck ziehen möchten, und ersetzen Sie den vorhandenen Text.
  3. M-x picture-yank-rectangle-from-register (die Sie auch an einen Schlüssel binden können).
Drew
quelle
1
Vielen Dank! Die M-x picture-yank-rectangle-from-registerLösung funktioniert gut für mich; Ich muss einfach (require 'picture)meine eingeben init.el.
Kaushal Modi
1

Ein anderer Ansatz besteht darin, delete-selection-modedies in Ihrer Init-Datei zu verwenden und zu tun:

 (put 'yank-rectangle 'delete-selection 'yank)

Aber das macht yank-rectangle immer den Text an der Stelle ersetzen, die vielleicht nicht, was Sie wollen.

Drew
quelle