带替换的 for 循环

for loop with substitution

我想通过 for 循环 作为替代命令范围:

for i in range(x, y) | is/$/foo/ | endfor

但我被Trailing characters: foo/ | endfor

击中了

Vim 报告的错误对于您命令中的实际问题有点误导。

实际问题是变量i不能那样使用。整个替换必须与 :help expr-.. 连接并传递给 :help :execute。在这种情况下:

for i in range(x, y) | execute i .. 's/$/foo/' | endfor

如果您不这样做,is/$/foo/ 中的 i 将被解释为文字 i,因此您使用的命令是 :help :isearch,而不是 :help :s。 Vim 因此报告了对 :is 的误用,并且完全且正确地忽略了您的初衷。

然后还有另一个问题,与手头的问题无关::help :s 已经在一个范围内工作,因此没有真正需要循环:

execute x .. ',' .. y .. 's/$/foo/'