如何在编辑的文本中将字符串序列创建为指定的行?

it_*_*ure 5 vim

这是最初的文字.

test1
test2
Run Code Online (Sandbox Code Playgroud)

文中只有两行.

我想从第5行到第16行插入字符串序列.我用以下代码尝试过它.

for i in range(1,12)  
    echo ".item".i.","
endfor  
Run Code Online (Sandbox Code Playgroud)

1.初始文本
在此输入图像描述 2.进入命令模式并输入代码

在此输入图像描述

有两个问题需要解决.
1.echo命令.item1在endfor之前输出第一个字符串.

for i in range(1,12)  
    echo ".item".i.","
Run Code Online (Sandbox Code Playgroud)

2.如何将字符串序列创建为指定行:从vimscript编辑的文本中的第5到第16个?

期望的结果如下.

在此输入图像描述

几乎完成了!
我得到的是如下命令 :pu! =map(range(1,12), 'printf(''item%1d'', v:val)').

他们两个都行不通.

:5pu! =map(range(1,12), 'printf(''item%1d'', v:val)')
:5,16pu! =map(range(1,12), 'printf(''item%1d'', v:val)')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想要的格式的最后一个问题是当光标位于第3行时,如何创建所需的输出?

Luc*_*tte 4

为了插入缺失的行,而不插入不需要的空行(-> append()+ repeat([''], nb)+ 可能为负数nb

:let lin = 5 - 1
:call append('$', repeat([''], lin-line('$')))
Run Code Online (Sandbox Code Playgroud)

然后,为了插入您要查找的内容(printf()如果您不想格式化数字,则不需要)

:call append(lin, map(range(1,12), '"item".v:val'))
Run Code Online (Sandbox Code Playgroud)

PS:我宁愿尽可能避免,:put因为它很难与复杂的表达式一起使用。