Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Repetition d'une suite de commande (unique)

4 réponses
Avatar
Benoit
Bonjour,

J'étais en train d'écrire un programme sous emacs en C quand je me suis
rendu compte qu'il falait que je change les définitions de mes en têtes
de void vers SCM.

le code ressemble à ça:
void jfkslmq
void jfklmsqd
void jgoapjfsqa
void dqslkmfds
void dsjlqm

et doit donc être transformé en ça:
SCM jfkslmq
SCM jfklmsqd
SCM jgoapjfsqa
SCM dqslkmfds
SCM dsjlqm

Pour automatiser la tache, je me suis dit qu'en plaçant le curseur au
début du premier void, je pourrais répeter la commande suivante 5 fois
pour obtenir le résultat:
M-d SCM C-A C-n
je connais la commande C-u n pour repeter _une_ commande n fois (bon,
pour passer le paramètre n à la commande - pour être plus précis) mais
je ne connais pas la commande pour repeter _plusieures_ commandes n fois.

Alors je sais ce que vous allez me dire. J'y ais pensé après. Pourquoi
ne pas utiliser la commande de remplacement ? Par pur jeux avec emacs.

D'autre par, ou peut t'on lancer une commande elisp directement dans emacs ?

Merci - Benoit

4 réponses

Avatar
lhabert
Benoit :

Bonjour,

J'étais en train d'écrire un programme sous emacs en C quand je me suis
rendu compte qu'il falait que je change les définitions de mes en têtes
de void vers SCM.

le code ressemble à ça:
void jfkslmq
void jfklmsqd
void jgoapjfsqa
void dqslkmfds
void dsjlqm

et doit donc être transformé en ça:
SCM jfkslmq
SCM jfklmsqd
SCM jgoapjfsqa
SCM dqslkmfds
SCM dsjlqm

Pour automatiser la tache, je me suis dit qu'en plaçant le curseur au
début du premier void,

je pourrais répeter la commande suivante 5 fois
pour obtenir le résultat:
M-d SCM C-A C-n



Tu enregistres cette suite de commande dans une macro :

C-x ( M-d SCM C-A C-n C-x )

puis, tu fais exécuter cinq fois la macro :

C-u 5 C-x e

.

<digression> En l'occurence, tu avais une solution à base de rectangles : tu
mets le curseur au début du premier « void », tu tapes « C-espace », tu
déplaces le curseur à la fin du dernier « void », et là tu tapes « C-x r
t », et il te demande une string par laquelle remplacer toutes les lignes du
rectangle que tu as sélectionné, donc tu entres « SCM ».

D'autre par, ou peut t'on lancer une commande elisp directement dans
emacs?



M-:

(non, ce n'est pas un smiley)
Avatar
lhabert
Benoit :

je pourrais répeter la commande suivante 5 fois
pour obtenir le résultat:
M-d SCM C-A C-n



Tu enregistres cette suite de commande dans une macro :

C-x ( M-d SCM C-A C-n C-x )

puis, tu fais exécuter cinq fois la macro :

C-u 5 C-x e

.

<digression> En l'occurence, tu avais une solution à base de rectangles : tu
mets le curseur au début du premier « void », tu tapes « C-espace », tu
déplaces le curseur à la fin du dernier « void », et là tu tapes « C-x r
t », et il te demande une string par laquelle remplacer toutes les lignes du
rectangle que tu as sélectionné, donc tu entres « SCM ».

D'autre par, ou peut t'on lancer une commande elisp directement dans
emacs?



M-:

(non, ce n'est pas un smiley)
Avatar
drkm
(Luc Habert) writes:

Tu enregistres cette suite de commande dans une macro :

C-x ( M-d SCM C-A C-n C-x )

puis, tu fais exécuter cinq fois la macro :

C-u 5 C-x e



Non, 4 fois. Les effets de l'enregistrement de la macro sont
effectifs. Donc N - 1 fois :

C-u C-x e

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html
Avatar
Benoit
Merci - Je suis satisfait par vos réponse. Et vive le C-h k !

Benoit - l'auteur du méssage de départ.