Effacement caractère VIM
Bastien
-
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.
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:
- Effacement caractère VIM
- Caractère spéciaux - Guide
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractere vide - Guide
- Effacement blanco - Télécharger - Divers Utilitaires
5 réponses
Excellent !!! Ca fonctionne parfaitement
Merci beaucoup.
Un dernier service, pourrais tu m'expliquer la signification des caractères de la commande ?
Encore merci
Merci beaucoup.
Un dernier service, pourrais tu m'expliquer la signification des caractères de la commande ?
Encore merci
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.
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.
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question