La manière par défaut de faire quelque chose comme ça est la suivante, qui n'est pas très élégante :
- Mettez le texte de remplacement souhaité dans le kill ring d'une manière ou d'une autre (par exemple, M-w).
- Mettez en surbrillance la région à remplacer.
- Supprimez-le (
C-w
).
- Remplacez-la par la région copiée précédemment (
C-y
, M-y
). Cela remplace le contenu fraîchement supprimé par le même texte que celui que vous venez de supprimer ( C-y
), puis le remplace par le tampon suivant le plus récemment sauvegardé dans l'anneau de tampons ( M-y
).
Cela deviendrait vraiment pénible si vous vouliez faire cela 10 fois avec le même texte, car le remplacement souhaité serait repoussé plus loin dans l'anneau de suppression à chaque fois que vous supprimez une région, de sorte que vous devriez appeler M-w
un nombre croissant de fois chaque fois que vous vouliez le tirer.
Je viens aussi de découvrir M-x delete-region
grâce à Emacs : comment supprimer du texte sans kill ring ? . Comme la question l'indique, cela permet de supprimer le texte incriminé sans le mettre dans l'anneau de mort, ce qui évite de pousser le texte de remplacement plus bas sur la pile. Et, comme le mentionne la réponse pertinente, vous pouvez lier cette fonction à un raccourci clavier de votre choix.
0 votes
Avoir des blocs de texte similaires (dans votre code ?), suggère généralement que vous avez besoin d'un remaniement, par exemple en remplaçant les blocs de texte similaires par un appel de fonction/méthode qui contient le "texte similaire". Je crois que c'est l'une des raisons pour lesquelles la fonction "remplacer la région" d'Emacs ne m'a jamais vraiment manqué...
0 votes
@slu comment renommez-vous la belle fonction/méthode que vous avez extraite ?
1 votes
@slu c'était clairement un exemple de vouloir remplacer une région sélectionnée par le presse-papiers. La réponse que vous avez donnée n'était en aucun cas constructive et montrait un désir de donner un signal de vertu sur les pratiques de codage plutôt que de répondre à la question légitime.