[VIM] Remplacement, position courante

[Résolu/Fermé]
Signaler
Messages postés
78
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 juillet 2009
-
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
-
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

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
78
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 juillet 2009
1
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.
Messages postés
78
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 juillet 2009
1
STOP !!!
Attends, je n'avais pas vu que tu me donnais un lien sur la doc.
Je regarde ça.
Merci !
Messages postés
78
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 juillet 2009
1
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.
Messages postés
78
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 juillet 2009
1
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.
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
Le $ n'indique donc pas la fin de la ligne mais la dernière ligne du fichier.
Dans une plage d'adresse uniquement...