2009-03-09 9 views
18

Je ne suis pas sûr que ce soit possible ou non, mais l'une des choses que je trouve que je dois faire souvent est de remplacer le contenu du fichier, mais je veux utiliser le courant numéro de ligne comme une option de remplacement. Donc, si j'avais un fichier comme:VI Expressions régulières - Remplacement en utilisant le numéro de ligne actuel

This is text to replace XX 
This is text to replace XX 
This is text to replace XX 

Je veux être en mesure d'exécuter une regex qui transformerait ce fichier dans:

This is text to replace 1 
This is text to replace 2 
This is text to replace 3 

Je l'ai regardé autour, mais je ne peux pas semblent trouver un moyen de le faire. Est-ce possible? Est-ce que quelqu'un sait d'une manière simple d'aborder ceci?

Merci.

Répondre

25
:help sub-replace-expression 

Vous pouvez construire une expression remplacer comme:

:[email protected] [email protected]\=" " . line(".")@ 

... Ce qui fonctionne pour moi.

+0

quelle est cette magie avec '@'. J'ai déménagé à travers l'aide et ce n'est toujours pas clair. –

+3

Merci, c'est exactement ce que je cherchais. Dans mon cas, l'expression que je cherchais était: :% s/XX/\ = ligne (".")/G Fonctionne comme un charme. –

+3

Tout caractère non alphanumérique suivi de s est utilisé comme délimiteur d'expressions. Que @ pourrait aussi bien être une virgule, une période, #, ",!, Ou ¥ comme cela pourrait être/ – greyfade

Questions connexes