¿Cómo sobrescribir un rectángulo copiado en lugar de insertarlo (que es el comportamiento predeterminado de yank-rectangle)?

8

Después de copiar un "rectángulo" usando C-x r M-w, haciendo C-x r yyanks o pegando el rectángulo. Pero eso inserta el rectángulo copiado.

¿Cómo puedo pegar el rectángulo copiado para que sobrescriba el texto?

Ejemplo:

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

Copié el rectángulo encerrado entre las posiciones del cursor que se muestran arriba usando M-x copy-rectangle-as-killo C-x r M-w.

Ahora, cuando lo pego frente al personaje husando M-x yank-rectangleo C-x r y, quiero que el resultado se vea como

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

en vez de

 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

¿Cómo puedo hacer la yank-rectanglesobrescritura?

Kaushal Modi
fuente
Funciona para mi. Intente ejecutar Emacs con el indicador -Q para usar la configuración predeterminada. Si eso funciona, entonces será algo en su configuración.
Colin Bell
Ah! Por error hice la pregunta inversa. Me refiero a encontrar una manera de C-x r ysobrescribir. Estoy editando mi pregunta ahora.
Kaushal Modi

Respuestas:

8

Uso M-x picture-mode. C-c C-y, obligado a ordenar picture-yank-rectangle, hace lo que quieras. (Puede usar C-_para deshacer).

Estas claves relacionadas también están disponibles en picture-mode:

  • C-c C-k- Borrar un rectángulo y guardarlo ( picture-clear-rectangle)
  • C-c C-w- Borrar un rectángulo y guardarlo en un registro ( picture-clear-rectangle-to-register)
  • C-c C-x- Me gusta C-c C-y, pero usa el rectángulo en un registro ( picture-yank-rectangle-from-register)
  • C-x r r- Copiar un rectángulo a un registro ( copy-rectangle-to-register)

Use C-c C-cpara salir del modo de imagen.

También puede usar los comandos del modo de imagen sin activar picture-mode, pero en ese caso sus teclas no están vinculadas. De todos modos, deberá cargar la biblioteca picture.

Entonces puedes, por ejemplo, hacer esto:

  1. Use C-x r rpara copiar un rectángulo a un registro.
  2. Coloque el cursor donde desee tirar de ese rectángulo, reemplazando el texto existente.
  3. M-x picture-yank-rectangle-from-register (que también puede vincular a una clave).
Dibujó
fuente
1
¡Gracias! La M-x picture-yank-rectangle-from-registersolución funciona muy bien para mí; Simplemente necesito poner (require 'picture)en mi init.el.
Kaushal Modi
1

Otro enfoque es usar delete-selection-modey hacer esto en su archivo init:

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

Pero eso hace que yank-rectangle siempre reemplace el texto en el punto, que podría no ser lo que desea.

Dibujó
fuente