Come sovrascrivere un rettangolo copiato invece di inserirlo (qual è il comportamento predefinito di yank-rectangle)?


8

Dopo aver copiato un "rettangolo" usando C-x r M-w, facendo C-x r ystrappi o incolla il rettangolo. Ma questo inserisce il rettangolo copiato.

Come posso incollare il rettangolo copiato in modo che sovrascriva il testo?

Esempio:

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

Ho copiato il rettangolo racchiuso tra le posizioni del cursore mostrate sopra usando M-x copy-rectangle-as-killo C-x r M-w.

Ora quando lo incollo davanti al personaggio husando M-x yank-rectangleo C-x r y, voglio che il risultato sia simile

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

invece di

 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

Come posso effettuare la yank-rectanglesovrascrittura?


Per me va bene. Prova a eseguire Emacs con il flag -Q per utilizzare la configurazione predefinita. Se funziona, sarà qualcosa nella tua configurazione.
Colin Bell,

Ah! Ho erroneamente posto la domanda inversa. Intendo trovare un modo per C-x r ysovrascrivere. Sto modificando la mia domanda ora.
Kaushal Modi,

Risposte:


8

Usa M-x picture-mode. C-c C-y, legato al comando picture-yank-rectangle, fa quello che vuoi. (È possibile utilizzare C-_per annullare.)

Queste chiavi correlate sono disponibili anche in picture-mode:

  • C-c C-k- Cancella un rettangolo e salvalo ( picture-clear-rectangle)
  • C-c C-w- Cancella un rettangolo e salvalo in un registro ( picture-clear-rectangle-to-register)
  • C-c C-x- Mi piace C-c C-y, ma usa il rettangolo in un registro ( picture-yank-rectangle-from-register)
  • C-x r r- Copia un rettangolo in un registro ( copy-rectangle-to-register)

Utilizzare C-c C-cper uscire dalla modalità immagine.

Puoi anche usare i comandi in modalità immagine senza accenderli picture-mode, ma in tal caso i loro tasti non sono associati. Sarà comunque necessario caricare la libreria picture.

Quindi puoi, per esempio, fare questo:

  1. Utilizzare C-x r rper copiare un rettangolo in un registro.
  2. Posiziona il cursore nel punto in cui desideri strappare quel rettangolo, sostituendo il testo esistente.
  3. M-x picture-yank-rectangle-from-register (che puoi anche associare a una chiave).

1
Grazie! La M-x picture-yank-rectangle-from-registersoluzione funziona benissimo per me; Devo semplicemente inserire il (require 'picture)mio init.el.
Kaushal Modi,

1

Un altro approccio è usare delete-selection-modee fare questo nel tuo file init:

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

Ma questo fa yank-rectangle sempre sostituire il testo in quel punto, che potrebbe non essere quello che vuoi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.