我想使用python命令在vim中创建一个随机数列表。
这很好用:
,!python -c "import random; print([random.uniform(1,10) for i in range(7)])"
但它会覆盖当前行,它不会在新行上添加每个数字,也无法格式化输出
我知道我可以使用类似print '%04.3f' %
的内容,但它会使用当前缓冲区扩展%
。
如何打印到新行,将每个数字添加到新行并格式化输出值(在当前缓冲区中)?
这一切都来自vim命令行(我不想使用外部python脚本)。
PS:
我知道您使用reltime()
和reltimestr
也在vim中创建了随机数,但我注意到它不是随机的,随机的,python会更快地生成数字。
答案 0 :(得分:1)
使用:r!
命令插入命令的结果而不是替换。
:r!python -c "import random; print('\n'.join(str(random.uniform(1,10)) for i in range(7)))"
NB。稍微修改了Python代码以打印多行。
str.join
str.join
。要使用str % ...
,您需要使用反斜杠转义%
:
:r!python -c "import random; print('\n'.join('\%04.3f' \% random.uniform(1,10) for i in range(7)))"
或者,您可以使用str.format
或format
代替%
operator:
:r!python -c "import random; print('\n'.join('{:04.3f}'.format(random.uniform(1,10)) for i in range(7)))"