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.