在一行中我想转此:
"".format(...)
进入这个:
"{0}, {1}, {2}, ..... {n}".format(...)
其中n
是我希望重复的元素数量。无需手动插入每个参数。
答案 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'。