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

Rya*_*ith 18 regex vim

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

This is text to replace XX 
This is text to replace XX 
This is text to replace XX
Run Code Online (Sandbox Code Playgroud)

我希望能够运行一个正则表达式,将该文件转换为:

This is text to replace 1
This is text to replace 2
This is text to replace 3
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

gre*_*ade 25

:help sub-replace-expression
Run Code Online (Sandbox Code Playgroud)

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

:s@ xx$@\=" " . line(".")@
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢,这就是我正在寻找的确切事情.在我的情况下,我正在寻找的表达式是:%s/XX /\= line(".")/ g就像魅力一样. (3认同)
  • 无论使用什么非字母数字字符,s都用作表达式的分隔符.@可以很容易地成为一个逗号,句号,#,",!或者¥,因为它可能是/ (3认同)