2009-03-09 13 views
18

No estoy seguro si es posible o no, pero una de las cosas que creo que debo hacer a menudo es reemplazar el contenido del archivo, pero quiero usar el actual número de línea como una opción de reemplazo. Así que si tuviera un archivo como:VI Expresiones regulares - Sustituir usando el número de línea actual

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

Me gustaría ser capaz de ejecutar una expresión regular que convertir ese archivo en:

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

He mirado alrededor, pero no puedo parece encontrar alguna forma de hacer esto. es posible? ¿Alguien sabe de una manera simple de abordar esto?

Gracias.

Respuesta

25
:help sub-replace-expression 

Puede construir una expresión de reemplazo como:

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

... Lo que funciona para mí.

+0

¿Qué es esa magia con '@'. Avancé con la ayuda y esto todavía no está claro. –

+3

Gracias, eso es exactamente lo que estaba buscando. En mi caso, la expresión que estaba buscando era: :% s/XX/\ = línea (".")/G Funciona como un encanto. –

+3

Cualquiera que sea el carácter no alfanumérico que sigue a s se usa como delimitador de expresiones. Ese @ podría ser fácilmente una coma, punto, #, ",! O ¥ como podría ser/ – greyfade

Cuestiones relacionadas