2009-03-09 11 views
18

Nie jestem pewien, czy to możliwe, czy nie, ale jedną z rzeczy, które muszę często wykonywać, jest zastąpienie zawartości pliku, ale chcę użyć aktualnego numer linii jako opcja zastępcza. Więc gdybym miał takiego pliku:VI Wyrażenia regularne - Zastępowanie przy użyciu bieżącego numeru wiersza

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

chciałbym być w stanie uruchomić regex, które uczyniłoby ten plik do:

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

Mam rozejrzał się, ale nie mogę wydaje się znaleźć jakiś sposób na zrobienie tego. czy to możliwe? Czy ktoś wie o prostym sposobie podejścia do tego?

Dzięki.

Odpowiedz

25
:help sub-replace-expression 

Można skonstruować wyrażenie zastąpić takiego:

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

... który pracuje dla mnie.

+0

co to za magia z "@". Przejrzałem pomoc, a to wciąż nie jest jasne. –

+3

Dzięki, o dokładnie to, czego szukałem. W moim przypadku wyrażenie, którego szukałem, było: :% s/XX/\ = linia (".")/G Działa jak urok. –

+3

Jakikolwiek niealfanumeryczny znak następuje po s, używany jest jako ogranicznik wyrażeń. Ten @ może równie łatwo być przecinkiem, kropką, #, ",! Lub ¥ jak mógł/ – greyfade

Powiązane problemy