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

标签 vim

这是初始文本。

test1
test2

正文中只有两行。

我想将字符串序列从第 5 行插入到第 16 行。
我已经用下面的代码试过了。
for i in range(1,12)  
    echo ".item".i.","
endfor  

1.初始文本。
enter image description here
2.进入命令模式并输入代码

enter image description here

需要解决的两个问题。
1.echo命令输出第一个字符串.item1在结束之前。
for i in range(1,12)  
    echo ".item".i.","

2.如何使用vimscript将字符串序列创建到指定行:从第5行到第16行?

想要的结果如下。

enter image description here

快完成了!
我得到的命令如下 :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)')

enter image description here

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

最佳答案

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

:let lin = 5 - 1
:call append('$', repeat([''], lin-line('$')))

然后,为了插入您要查找的内容(如果您不想格式化数字,则不需要 printf())
:call append(lin, map(range(1,12), '"item".v:val'))

PS:我宁愿避免 :put我什么时候可以,因为它很难与复杂的表达式一起使用。

关于vim - 如何在编辑文本中将字符串序列创建为特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44103829/

相关文章:

haskell - vim:保存时调用函数

Vim:处理函数 <SNR>37_MRU_LoadList 时检测到错误:

vim - 如何在 Vim 中切换命令模式和插入模式?

vim:使用 :bn 在缓冲区之间切换时保留光标位置

vim - 将 'find' 命令的输出重定向到 'vim'

javascript - vim javascript 全方位

macvim - 从函数引用文件类型

ruby - 在 win7 上的 ruby​​ 文件中运行自动完成时 gVim 崩溃

linux - 如何从vim中删除特定的文件缓冲区?

search - vim 中的字符串完全匹配? (就像在less中的 'regex-off'模式。)