带有增量编号的Vim插入序列

时间:2012-10-18 15:23:58

标签: vim

在一行中我想转此:

"".format(...)

进入这个:

"{0}, {1}, {2}, ..... {n}".format(...)

其中n是我希望重复的元素数量。无需手动插入每个参数。

4 个答案:

答案 0 :(得分:4)

我不知道这种方式是否合适:

"I(cursor here)
".format(...)

执行命令:

:r! seq -s, -f "{\%g}" 0 20

然后加入(J)3行。在你的情况下,20是n

"I".format(...)

要插入模式,ctrl-R,然后输入=system("seq -s, -f '{%g}' 0 20")

答案 1 :(得分:2)

如果光标位于空双引号之间,我会这样做(n = 5):

i<C-R>=join(map(range(5), 'printf("{%d}", v:val)'), ', ')<CR>

一些 vimgolf 爱好者可能会进一步浓缩这一点。但我可能会为它编写一个映射(如果需要经常发生),或者像这样手动执行:

5i{0}, <Esc>^f0;<C-A>;2<C-A>;3<C-A>;4<C-A>

答案 2 :(得分:0)

我会使用宏,例如:

0a{0}, <esc>lqqyF{f"PB<C-a>;q

然后只使用n-1和@q。例如。 4@qXX会给出:

"{0}, {1}, {2}, {3}, {4}, {5}".format(...)

答案 3 :(得分:0)

Windows中没有“seq”命令,所以我更喜欢这个:

:call append(".", map(range(6), '"{".v:val."},"'))

然后加入这些行使用'6J'。