Effacement caractère VIM

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

  • Votes
  • Date
  • Date décroissante
  1. Excellent !!! Ca fonctionne parfaitement
    Merci beaucoup.

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

    Encore merci
    1. 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.
      1. Contributeur
        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