4

在一行中,我希望将其转为:

"".format(...)

进入这个:

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

n我希望重复的元素数量在哪里。无需手动插入每个参数。

4

4 回答 4

4

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

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

执行命令:

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

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

或者"I".format(...)

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

于 2012-10-18T15:42:32.837 回答
2

用空双引号之间的光标,我会做(for 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>
于 2012-10-18T15:46:34.563 回答
0

我会使用宏,例如:

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

然后只需使用 n-1 与@q. 例如4@qXX会给:

"{0}, {1}, {2}, {3}, {4}, {5}".format(...)
于 2012-10-18T15:59:05.963 回答
0

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

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

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

于 2013-04-09T08:06:13.247 回答