Comment écraser un rectangle copié au lieu de l'insérer (ce qui est le comportement par défaut de rectangle yank)?


8

Après avoir copié un "rectangle" en utilisant C-x r M-w, en C-x r ytirant ou en collant le rectangle. Mais cela insère le rectangle copié.

Comment puis-je coller le rectangle copié pour qu'il écrase le texte?

Exemple:

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

J'ai copié le rectangle inclus entre les positions du curseur ci-dessus en utilisant M-x copy-rectangle-as-killou C-x r M-w.

Maintenant, quand je le colle devant le personnage en hutilisant M-x yank-rectangleou C-x r y, je veux que le résultat ressemble à

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

au lieu 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

Comment faire l' yank-rectangleécrasement?


Travaille pour moi. Essayez d'exécuter Emacs avec l'indicateur -Q afin d'utiliser la configuration par défaut. Si cela fonctionne, cela va être quelque chose dans votre configuration.
— Colin Bell,

Ah! J'ai par erreur posé la question inverse. Je veux trouver un moyen C-x r yd'écraser. J'édite ma question maintenant.
— Kaushal Modi

Réponses:


8

Utilisez M-x picture-mode. C-c C-y, lié à la commande picture-yank-rectangle, fait ce que vous voulez. (Vous pouvez utiliser C-_pour annuler.)

Ces clés associées sont également disponibles dans picture-mode:

  • C-c C-k- Effacez un rectangle et enregistrez-le ( picture-clear-rectangle)
  • C-c C-w- Effacez un rectangle et enregistrez-le dans un registre ( picture-clear-rectangle-to-register)
  • C-c C-x- Comme C-c C-y, mais utilise le rectangle dans un registre ( picture-yank-rectangle-from-register)
  • C-x r r- Copier un rectangle dans un registre ( copy-rectangle-to-register)

Utilisez C-c C-cpour quitter le mode image.

Vous pouvez également utiliser les commandes du mode image sans les activer picture-mode, mais dans ce cas, leurs touches ne sont pas liées. Vous devrez de toute façon charger la bibliothèque picture.

Vous pouvez donc, par exemple, faire ceci:

  1. Utilisez C-x r rpour copier un rectangle dans un registre.
  2. Placez le curseur à l'endroit où vous souhaitez retirer ce rectangle, en remplaçant le texte existant.
  3. M-x picture-yank-rectangle-from-register (que vous pouvez également lier à une clé).

1
Merci! La M-x picture-yank-rectangle-from-registersolution fonctionne très bien pour moi; Je dois simplement mettre (require 'picture)mon init.el.
— Kaushal Modi,

1

Une autre approche consiste à utiliser delete-selection-modeet à faire cela dans votre fichier init:

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

Mais cela fait yank-rectangle toujours remplacer le texte au point, ce qui n'est peut-être pas ce que vous voulez.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.