Effacement caractère VIM

Bastien -  
 bastien -
Bonjour

J'ai récupéré un code en C et à chaque début de ligne il y a le numéro de ligne que je souhaite supprimer.
Le numéro de ligne se terminant par un point, j'ai pensé faire une commande en vim qui supprime tous les caractères jusqu'à ce point. Qu'elle est cette commande ?

D'avance merci.

5 réponses

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    çà devrait marcher :

    :%s/^.*\.//

    Dal
    0
  2. Bastien
     
    Excellent !!! Ca fonctionne parfaitement
    Merci beaucoup.

    Un dernier service, pourrais tu m'expliquer la signification des caractères de la commande ?

    Encore merci
    0
  3. bastien
     
    Aie !!
    Ca marche moyennement finalement.

    En faite, ça efface bien les caractères avant chaque "." mais le problème, c'est que cela le fait sur tous le code et pas seulement en début de ligne.
    Il y a donc des morceaux de codes qui disparaissent (s'il y a un point au milieu du code).

    Quelqu'un a la solution.
    0
    1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      Salut Bastien,

      Arg.. c'est traitre ces petits machins.

      Tu as raison. Voilà l'explication :

      :%s/^.*\.//

      % traite tout le fichier
      s opération de substitution
      ^ à partir du début de chaque ligne
      . tout caractère
      * autant de fois que possible
      \. jusqu'au point
      // remplace par rien

      Le problème vient du fait que * est un quantifieur "gourmand". Le regexp ne s'arrête donc pas au premier point rencontré sur une ligne donnée, mais au dernier tant que l'expression recherchée est vraie...

      Pour restreindre la portée de l'expression, on peut utiliser un quantifieur non gourmand tel que \{-} à la place de *, qui s'arrêtera au strict minimum

      :%s/^.\{-}\.//

      L'expression proposée par jipicy fonctionne si tous les caractères en début de ligne avant le premier point sont des chiffres (ce qui semble être ton cas).


      Dal
      0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Essaie ça alors :
    :%s/^[0-9][0-9]*\.//
    ;-))
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. bastien
     
    Ca marche

    merci beaucoup à tous les 2.
    0