Editer plusieurs fichiers à la fois

Le
Vincent Bernat
Coucou !

Je voudrais éditer plusieurs buffers à la fois. Il s'agit d'ouvrir des
fichiers similaires et de les éditer tous à la fois. Un peu comme ce
qu'on peut faire avec cssh (cluster ssh) : tout ce que je tape dans un
buffer est tapé à l'identique dans un autre.

Une idée ?
--
die_if_kernel("Kernel gets FloatingPenguinUnit disabled trap", regs);
2.2.16 /usr/src/linux/arch/sparc/kernel/traps.c
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Marc Boyer
Le #21779531
On 2008-03-18, Vincent Bernat
Coucou !

Je voudrais éditer plusieurs buffers à la fois. Il s'agit d'ouvrir des
fichiers similaires et de les éditer tous à la fois. Un peu comme ce
qu'on peut faire avec cssh (cluster ssh) : tout ce que je tape dans un
buffer est tapé à l'identique dans un autre.



Et pourquoi pas un bon vieux "cp" après avoir modifié un fichier ?

Une idée ?



Non.
Et puis je ne vois pas pourquoi quelqu'un aurait développé cela
alors qu'un cp en fin d'édition convient.
Mais j'ai peut-être raté une partie du problème.

Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)
Vincent Bernat
Le #21779521
OoO En cette fin de matinée radieuse du mercredi 19 mars 2008, vers
11:21, Marc Boyer
Je voudrais éditer plusieurs buffers à la fois. Il s'agit d'ouvrir des
fichiers similaires et de les éditer tous à la fois. Un peu comme ce
qu'on peut faire avec cssh (cluster ssh) : tout ce que je tape dans un
buffer est tapé à l'identique dans un autre.



Et pourquoi pas un bon vieux "cp" après avoir modifié un fichier ?



Parce qu'ils ne sont pas forcément identiques. Je veux juste faire la
même modification sur les deux fichiers.
--
BOFH excuse #71:
The file system is full of it
Marc Boyer
Le #21779511
On 2008-03-19, Vincent Bernat
OoO En cette fin de matinée radieuse du mercredi 19 mars 2008, vers
11:21, Marc Boyer
Je voudrais éditer plusieurs buffers à la fois. Il s'agit d'ouvrir des
fichiers similaires et de les éditer tous à la fois. Un peu comme ce
qu'on peut faire avec cssh (cluster ssh) : tout ce que je tape dans un
buffer est tapé à l'identique dans un autre.





Et pourquoi pas un bon vieux "cp" après avoir modifié un fichier ?



Parce qu'ils ne sont pas forcément identiques. Je veux juste faire la
même modification sur les deux fichiers.



Dur.
Parce que je vois pas trop ce que l'éditeur va permettre de
visualiser. Il faudrait faire un 'diff' préalable, sur 'n' fichiers,
éditer les parties communes en faisant une sorte de "gris" sur le
reste...
Je pense que tu pourrais t'en sortir plutôt à coup de script
sed/awk/perl, quitte à faire le diff entre l'original et la
copie pour voir avant.

Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)
Vincent Bernat
Le #21779501
OoO En cette matinée ensoleillée du jeudi 20 mars 2008, vers 09:51, Marc
Boyer
Je voudrais éditer plusieurs buffers à la fois. Il s'agit d'ouvrir des
fichiers similaires et de les éditer tous à la fois. Un peu comme ce
qu'on peut faire avec cssh (cluster ssh) : tout ce que je tape dans un
buffer est tapé à l'identique dans un autre.





Et pourquoi pas un bon vieux "cp" après avoir modifié un fichier ?



Parce qu'ils ne sont pas forcément identiques. Je veux juste faire la
même modification sur les deux fichiers.



Dur.
Parce que je vois pas trop ce que l'éditeur va permettre de
visualiser. Il faudrait faire un 'diff' préalable, sur 'n' fichiers,
éditer les parties communes en faisant une sorte de "gris" sur le
reste...



Justement, je ne lui demande rien de visualiser, juste d'exécuter une
même suite d'action sur plusieurs buffers. Je pourrais le faire en
différé en enregistrant une macro. Mais non seulement, elle s'arrêterait
en temps d'erreur, mais je veux le faire en même temps au cas où une
suite d'action n'a pas l'effet souhaité dans un des buffers.
--
BOFH excuse #184:
loop found in loop in redundant loopback
Marc Boyer
Le #21779491
On 2008-03-21, Vincent Bernat
OoO En cette matinée ensoleillée du jeudi 20 mars 2008, vers 09:51, Marc
Boyer
Je voudrais éditer plusieurs buffers à la fois. Il s'agit d'ouvrir des
fichiers similaires et de les éditer tous à la fois. Un peu comme ce
qu'on peut faire avec cssh (cluster ssh) : tout ce que je tape dans un
buffer est tapé à l'identique dans un autre.





Et pourquoi pas un bon vieux "cp" après avoir modifié un fichier ?



Parce qu'ils ne sont pas forcément identiques. Je veux juste faire la
même modification sur les deux fichiers.





Dur.
Parce que je vois pas trop ce que l'éditeur va permettre de
visualiser. Il faudrait faire un 'diff' préalable, sur 'n' fichiers,
éditer les parties communes en faisant une sorte de "gris" sur le
reste...



Justement, je ne lui demande rien de visualiser, juste d'exécuter une
même suite d'action sur plusieurs buffers.



J'avoue que je ne comprend toujours pas tout: d'une part, utiliser
emacs (éditeur) sans rien visualiser... Autant prendre sed, non ?

Je pourrais le faire en
différé en enregistrant une macro. Mais non seulement, elle s'arrêterait
en temps d'erreur, mais je veux le faire en même temps au cas où une
suite d'action n'a pas l'effet souhaité dans un des buffers.



Mais tu veux voir l'effet sur tous les fichiers en même temps ?

Enfin bon, pour revenir à la question initiale, je serai étonné
que quelque chose existe car, de ce que je comprends du problème,
c'est très spécifique, et emacs ne me semble pas le bon outil
pour faire ça (modulo que bien sûr, il peut le faire puisqu'il
peut tout faire...).

Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)
Vincent Belaïche
Le #21779361
Bonjour,

Peut-être que ceci répond à ton besoin : tu fait `C-x (' pour commencer
une macro clavier (Keyboard macro) tu fais ton édition dans l'un des
fichiers, puis tu fais `C-x )' pour fermer la macro clavier. Après tu va
dans chacun des fichiers et tu lances la macro.

Tu pourrais automatiser cette dernière étape en développant une fonction
interactive en Elisp pour lancer la macro clavier dans chacun des
buffers ouvert dans le même mode que le buffer courant sauf dans le
buffer courant.

Mais à dire vrai je suis d'accord avec l'un des commentaires qu'on t'a
fait. Le mieux dans ta situation (et c'est ce que moi je ferais) et
d'écrire un petit script AWK (ou Elisp) qui va faire la modification.

A+,
Vincent.



Marc Boyer a écrit :
On 2008-03-21, Vincent Bernat
OoO En cette matinée ensoleillée du jeudi 20 mars 2008, vers 09:51, Marc
Boyer
Je voudrais éditer plusieurs buffers à la fois. Il s'agit d'ouvrir des
fichiers similaires et de les éditer tous à la fois. Un peu comme ce
qu'on peut faire avec cssh (cluster ssh) : tout ce que je tape dans un
buffer est tapé à l'identique dans un autre.


Et pourquoi pas un bon vieux "cp" après avoir modifié un fichier ?


Parce qu'ils ne sont pas forcément identiques. Je veux juste faire la
même modification sur les deux fichiers.


Dur.
Parce que je vois pas trop ce que l'éditeur va permettre de
visualiser. Il faudrait faire un 'diff' préalable, sur 'n' fichiers,
éditer les parties communes en faisant une sorte de "gris" sur le
reste...


Justement, je ne lui demande rien de visualiser, juste d'exécuter une
même suite d'action sur plusieurs buffers.



J'avoue que je ne comprend toujours pas tout: d'une part, utiliser
emacs (éditeur) sans rien visualiser... Autant prendre sed, non ?

Je pourrais le faire en
différé en enregistrant une macro. Mais non seulement, elle s'arrêterait
en temps d'erreur, mais je veux le faire en même temps au cas où une
suite d'action n'a pas l'effet souhaité dans un des buffers.



Mais tu veux voir l'effet sur tous les fichiers en même temps ?

Enfin bon, pour revenir à la question initiale, je serai étonné
que quelque chose existe car, de ce que je comprends du problème,
c'est très spécifique, et emacs ne me semble pas le bon outil
pour faire ça (modulo que bien sûr, il peut le faire puisqu'il
peut tout faire...).

Marc Boyer
Vincent Bernat
Le #21779351
OoO En cette matinée pluvieuse du dimanche 13 avril 2008, vers 10:57,
Vincent Belaïche
Peut-être que ceci répond à ton besoin : tu fait `C-x (' pour
commencer une macro clavier (Keyboard macro) tu fais ton édition dans
l'un des fichiers, puis tu fais `C-x )' pour fermer la macro
clavier. Après tu va dans chacun des fichiers et tu lances la macro.



Le problème, c'est qu'en cas d'erreur, l'enregistrement de la macro est
interrompu. Je ne peux pas non plus vérifier en temps réél que ce que je
fais a bien l'effet escompté sur les deux copies du fichier.

Mais à dire vrai je suis d'accord avec l'un des commentaires qu'on t'a
fait. Le mieux dans ta situation (et c'est ce que moi je ferais) et
d'écrire un petit script AWK (ou Elisp) qui va faire la modification.



Les manips en question prennent une dizaine de secondes et sont très
répétitives. Si je dois développer une petit script à chaque fois, au
lieu de mettre 20 secondes, je vais mettre 5 minutes. Pas très
productif. De plus, je ne sais pas si les modifications ont bien eu
l'effet escompté. Si je dois en plus faire un diff après coup, c'est
autant de temps perdu.
--
die_if_kernel("Penguin instruction from Penguin mode??!?!", regs);
2.2.16 /usr/src/linux/arch/sparc/kernel/traps.c
Vincent Bernat
Le #21779341
OoO En ce début d'après-midi ensoleillé du dimanche 13 avril 2008, vers
15:19, Vincent Belaïche
Juste par curiosité, comment assures-tu que le texte que tu modifies
dans un fichier va s'insérer à l'endroit voulu dans les autres
fichiers. Il faut bien que tes fichiers ne soient pas totalement
différents.



Oui, ils ne sont pas totalement différents. Ils sont même quasiment
identiques, mais il peut y avoir de petites différences. Pour le moment,
j'utilise clusterssh. S'il y a une différence entre les deux fichiers,
je peux prendre la main sur un seul des terminaux pour faire certaines
actions visant à compenser les différences.

Ne serait-il pas possible non plus que tu mettes la partie commune à
tous ces fichiers dans un seul fichier commun, et que tu inclues ce
fichier commun dans ces fichiers via une commande propre au langage
dont que tu édites avec Emacs (par exemple si c'est du C avec une
directive `#include', si c'est du LaTeX avec `input' ou `include',
etc...).



Les fichiers ne sont pas sur la même machine.
--
Et puis, je mets pas de swap, comme ca, le premier qui fait le con, le
noyau l'abat ... (a la corse)
-+- NLS in GFA: le process glouton prend le maquis -+-
Publicité
Poster une réponse
Anonyme