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

时间:2017-05-22 02:35:34

标签: 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命令在endfor之前输出第一个字符串.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行时,如何创建所需的输出?

2 个答案:

答案 0 :(得分:4)

为了插入缺失的行,而不插入不需要的空行( - > 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,因为它很难用于复杂的表达。

答案 1 :(得分:1)

假设您使用的是基于Unix的操作系统,则可以使用textlinepre命令。 所以你可以这样做:

%Created with Spacar 2.0.25 at 18-05-17, 11:43:37

% leafspring1
BEAM        1   1    2   3    4   0.0000000000   1.0000000000   0.0000000000
% solid bar
BEAM        2   3    4   5    6   0.0000000000   0.0000000000   1.0000000000
% leafspring2
BEAM        3   5    6   7    8   0.0000000000   1.0000000000   0.0000000000

   X        1   0.0000000000   0.0000000000   0.0000000000
   X        3   0.0000000000   0.1000000000   0.1000000000
   X        5   0.0000000000   0.0000000000   0.1000000000
   X        7   0.0000000000   0.1000000000   0.0000000000

FIX 1 1
FIX 1 2
FIX 1 3
FIX 2 2
FIX 2 3
FIX 2 4
FIX 7 1
FIX 7 2
FIX 7 3
FIX 8 2
FIX 8 3
FIX 8 4

RLSE 3 1
RLSE 3 2
RLSE 3 3
RLSE 3 4
RLSE 3 5
RLSE 3 6

DYNE 1 1
DYNE 1 2
DYNE 1 3
DYNE 1 4
DYNE 1 5
DYNE 1 6


END
HALT

XF 3 0.000000000000 0.000000000000 0.000000000000

EM 1 0.070650000000 0.000001909022 0.000001907550 0.000000001472 0.000000000000
EM 2 1.999400000000 0.000094804883 0.000066646667 0.000028158217 0.000000000000
EM 3 0.070650000000 0.000001909022 0.000001907550 0.000000001472 0.000000000000

ESTIFF 1 1890000.000000000000 0.058028906301 51.030000000000 0.039375000000 0.000000000000 0.000000000000
ESTIFF 3 1890000.000000000000 0.000000000000 0.000000000000 0.039375000000 0.000000000000 0.000000000000

EDAMP 1 0.365400000000 0.000006500000 0.000190000000 0.000005300000
EDAMP 3 0.365400000000 0.000000000000 0.000000000000 0.000005300000

TIMESTEP        10.00 50
ITERSTEP 10 10 0.00005

END
END

VISUALIZATION
BEAMVIS  1 0.000500000000 0.018000000000
BEAMVIS  2 0.013000000000 0.020000000000
BEAMVIS  3 0.000500000000 0.018000000000

VIBRATIONMODE 1
VIBREND 7.854
ENLARGEFACTOR 0.01
TRANSPARENCY 0.6

seq内,您可以尝试从外部命令读取方法:

$ seq -f 'Item %.0f' 20
Item 1
Item 2
...
Item 20