[VIM] Remplacement, position courante

Résolu
lmhelp Messages postés 79 Statut Membre -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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.

--
Lmhelp
Configuration: Windows XP
Firefox 2.0.0.9

6 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  3. lmhelp Messages postés 79 Statut Membre 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.
    0
  4. lmhelp Messages postés 79 Statut Membre 1
     
    STOP !!!
    Attends, je n'avais pas vu que tu me donnais un lien sur la doc.
    Je regarde ça.
    Merci !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lmhelp Messages postés 79 Statut Membre 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.
    0
  7. lmhelp Messages postés 79 Statut Membre 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.
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Le $ n'indique donc pas la fin de la ligne mais la dernière ligne du fichier.
      Dans une plage d'adresse uniquement...
      0