Comment puis-je entrer query-replace dans GNU Emacs en utilisant une fonction répétable basée sur les valeurs de la ligne actuellement au point

1

J'aimerais prendre les données suivantes et les occurrences de requête-remplacement de chaque identificateur de mot avec l'identificateur numérique correspondant en utilisant une sorte de fonction répétable.

-1 ACT/CNS
-2 AG NFC
-3 AID
-4 BBG
-5 BIA
-6 BLM
-7 BOC
-8 BPD
-9 CCC
-10 CDC
-11 Census

En d'autres termes, avec point à

-1 ACT/CNS
^

J'aimerais pouvoir appuyer sur une touche et lancer la commande suivante

query-replace RET ACT/CNS RET -1 RET

J'ai essayé de définir une macro de clavier, mais il semble y avoir suffisamment de sauts entre les mémoires tampons et les appels Mx pour confondre kbmacro et le rendre inutilisable.

Pensées?

Tim Visher
la source
Où voulais-tu faire le remplacement? Dans le même tampon ou dans un autre?
Trey Jackson

Réponses:

2

C’est ce que j’ai fait pour créer la macro clavier qui remplaçait les symboles par des chiffres.

C-a                     ;; move-beginning-of-line
M-f                     ;; forward-word
C-f                     ;; forward-char
C-SPC                   ;; set-mark-command
C-e                     ;; move-end-of-line
M-w                     ;; kill-ring-save
C-a                     ;; move-beginning-of-line
C-SPC                   ;; set-mark-command
M-f                     ;; forward-word
M-w                     ;; kill-ring-save
M-%                     ;; query-replace
C-y                     ;; yank
M-y                     ;; yank-pop
RET                     ;; newline-and-indent
C-y                     ;; yank
M-y                     ;; yank-pop
RET                     ;; newline-and-indent

Lorsque le curseur est sur la ligne correspondant à "-1 ACT / CNS", la requête ci-dessus lance la requête / remplace par les valeurs souhaitées - dans la mémoire tampon actuelle.

À moins que vous ne le fassiez souvent (comme dans, plus qu'aujourd'hui), je resterais avec la macro parce que c'est facile à installer.

Trey Jackson
la source