VI正则表达式 - 使用当前行号替换

时间:2009-03-09 20:38:43

标签: regex vim

我不确定它是否可能,但我发现我需要经常做的事情之一是替换文件的内容,但我想使用当前行号作为替换选项。所以,如果我有一个像:

这样的文件
This is text to replace XX 
This is text to replace XX 
This is text to replace XX

我希望能够运行一个将该文件转换为:

的正则表达式
This is text to replace 1
This is text to replace 2
This is text to replace 3

我环顾四周,但似乎无法找到任何办法。这可能吗?有谁知道一个简单的方法来解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:25)

:help sub-replace-expression

您可以构造一个替换表达式,如:

:s@ xx$@\=" " . line(".")@

......哪个适合我。

答案 1 :(得分:0)

这是更容易的方法

:%s/dummy/\=printf("dummy%d", line('.'))

vi中的上述正则表达式将行号附加到每个伪单词:

来自

dummy
dummy
dummy

收件人:

dummy1
dummy2
dummy3