这是最初的文字.
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.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行时,如何创建所需的输出?
为了插入缺失的行,而不插入不需要的空行(-> 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因为它很难与复杂的表达式一起使用。