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.
A voir également:

5 réponses

[Dal] Messages postés 6373 Statut Contributeur 1 106
 
çà devrait marcher :

:%s/^.*\.//

Dal
0
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
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
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
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
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

Essaie ça alors :
:%s/^[0-9][0-9]*\.//
;-))
0

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

Posez votre question
bastien
 
Ca marche

merci beaucoup à tous les 2.
0