[VIM] Remplacement, position courante

Résolu/Fermé
lmhelp Messages postés 78 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 16 juillet 2009 - 26 nov. 2007 à 16:39
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 26 nov. 2007 à 19:15
Bonjour,

Ma question concerne le remplacement d'un motif "motif_1" par un autre motif "motif_2" dans "VIM".
La commande que j'utilise est :
%s/motif_1/motif_2/gc

Seulement, le remplacement démarre au début du fichier.
Connaissez-vous une option permettant que celui-ci démarre à la position courante du curseur ?
J'espère que ma question est claire :)
Merci par avance pour votre aide.

6 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
26 nov. 2007 à 17:42
Salut,

Pour remplacer uniquement le 1er motif de la ligne courante, faire précéder la commande par un point :
: . s/motif/pattern/
pour tous les motifs de la ligne courante ajouter un "g" :
: . s/motif/pattern/g
et pour tous les motifs allant de la ligne courante à la fin du fichier, indiquer la plage :
: .,$ s/motif/pattern/g
Doc ;-))
2
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
26 nov. 2007 à 18:27
Le point (.) indique donc la ligne courante.
La virgule (,) est employée comme séparateur.
le dollar ($) dans une plage d'adresse, indique la fin du fichier, en réalité la dernière ligne.
Donc dans la plage ".,$" on demande de faire un remplacement depuis la ligne courante jusqu'à la fin du fichier.

Si tu veux désigner une autre plage d'adresse, il suffit de remplacer le "$" par le numéro de ligne correspondant.
2
lmhelp Messages postés 78 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 16 juillet 2009 1
26 nov. 2007 à 18:06
Super !
Merci beaucoup.
La dernière commande est celle qui répond à mon problème.

Pourrais-tu m'expliquer ce que signifient alors :
%s
dans
:%s/motif_1/motif_2/gc
et
.,$s
dans
:.,$s/motif/pattern/g

"s" pour "substitute" ?
% ?
.,$ ?

Merci encore de m'avoir répondu.
0
lmhelp Messages postés 78 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 16 juillet 2009 1
26 nov. 2007 à 18:08
STOP !!!
Attends, je n'avais pas vu que tu me donnais un lien sur la doc.
Je regarde ça.
Merci !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lmhelp Messages postés 78 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 16 juillet 2009 1
26 nov. 2007 à 18:13
De la doc. conseillée par jipicy :
La plage '%' indique que l'expression doit être remplacée dans toutes les lignes.

Mais euhhh, je veux bien une petite explication sur ".,$" si possible ?

Merci.
0
lmhelp Messages postés 78 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 16 juillet 2009 1
26 nov. 2007 à 18:52
Ok, super, merci.
Le $ n'indique donc pas la fin de la ligne mais la dernière ligne du fichier.
Merci et bonne soirée.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
26 nov. 2007 à 19:15
Le $ n'indique donc pas la fin de la ligne mais la dernière ligne du fichier.
Dans une plage d'adresse uniquement...
0