Aller au contenu

Jour 18 : chercher et remplacer multiples

·250 mots·2 mins·
eeame
Auteur
eeame

Comment modifier plusieurs fichiers en même temps?

Je veux modifier plusieurs fichiers à la fois selon certaines règles. Par exemple, remplacer dans certains fichiers “2024” par “2025”. Dans emacs, il existe de nombreuses façons de faire des modifications dans plusieurs fichiers à la fois.

  • avec dired (cf. jour 16 )
  • avec M-x multi-occur. L’inconvénient de cette solution est la nécessité de sélectionner un à un les fichiers.

et bien d’autres…

Je te propose une solution que j’aime bien.

Paquets utilisés
#

Exemple
#

Remplaçons toutes les occurrences de 2025 dans le préambule des fichiers org et uniquement dans ces fichiers par 2025-2026 ou par ce que tu veux…

  1. lance M-x consult-ripgrep pour sélectionner les fichiers qui contiennent la chaîne de caractère à remplacer. Par défaut, la recherche est lancée dans le répertoire du projet en cours.
    • commence par lancer la commande M-s r
    • saisis 2025 by#org tous les fichiers org qui contiennent la chaîne de caractère 2025 by sont sélectionnés dans tous les répertoires du projet.
  2. puis embark-act ( C-. ) pour faire une action.
  3. exporte le résultat obtenu en 1. par embark-export en pressant la touche E.
  4. change le mode du tampon par M-x change-to-wgrep-mode (C-c C-p)
  5. pour modifier toutes les occurrences utilise par exemple iedit-mode:
    • sélectionne 2025
    • C-!
    • modifie la chaîne de caractère.
    • C-!
  6. une fois les modifications terminées, enregistre tous les tampons ouverts wgrep-finish-edit ( C-x C-s )
  7. (optionnel. Normalement inutile ici). Enfin enregistre tous les fichiers par

C-x s save-some-buffers