如何在vim文本文档中进行多重计算?

如何在vim文本文档中进行多重计算?,vim,macros,numbers,calculator,Vim,Macros,Numbers,Calculator,我想在我的文本文档中插入多个计算的输出: 2**3 = (the result) 2**4 = .. 2**30 = (**=指数型) 有人能帮我吗 附言: 最好在vim中使用一种即时脚本,而不使用.vimrc, 只是为了快速行动 p、 e. 适用于范围(3,30)内的i 打印“2**.i.”=.2**i endfor您可以像这样为…循环编写: :for i in range(3, 30) | call setline(i-2, printf('2**%d = %

我想在我的文本文档中插入多个计算的输出:

2**3 = (the result)   
2**4 =         
..   
2**30 =
(**=指数型)
有人能帮我吗

附言:
最好在vim中使用一种即时脚本,而不使用.vimrc, 只是为了快速行动

p、 e.
适用于范围(3,30)内的i
打印“2**.i.”=.2**i

endfor

您可以像这样为…循环编写

:for i in range(3, 30) | call setline(i-2, printf('2**%d = %d', i, float2nr(pow(2, i)))) | endfor
另一种方法是将消息重定向到文件:

:redir! >output.txt
:for i in range(3, 30) | echo printf('2**%d = %d', i, float2nr(pow(2, i))) | endfor
:redir END
:e output.txt

如果您更喜欢Python,并且您的vim是在支持的情况下编译的,您可以使用它:

:py import vim
:py for i in range(3, 30): vim.current.buffer.append("2**%d = %d" % (i, 2**i))
对于更复杂的壮举,您可能希望编写一段代码,而不是一行程序。这是一种方法,只是在交互式命令行上不太方便,但可能:

:py << EOF
import vim
for i in range(3, 30):
  for j in range(1, 3):
    vim.current.buffer.append("{}x{}".format(i, j))
EOF

:py您可以使用特殊寄存器
=
在vim中执行数学运算,例如,如果您在插入模式下键入

2+3=<C-R>=2+3<CR>

p.S.
表示CTRL+r,
表示按return键。

以下操作也有效

写几行,比如python

total = 0.0
for i in range(10):
   total += i*i
print total
然后目视选择行(使用
shift-v
)并键入
:!python
。你真正应该看到的是
:“哇..”。。我不知道我可以用命令行中的for..循环来完成。非常感谢。你能告诉我它到底是做什么的吗?如果我想乘以I*I,命令p.e.是什么<代码>:对于范围(3,30)中的i,调用setline(i-2,printf(“%d*%d=%d',i,i*i))
给出错误。
printf()的参数不足。
。还考虑代码< >代码追加('',.',map(范围(3, 30)”,“2 **”. v:Val.“=”.字符串(POW(2,V:VALL)))(<代码> >或代码>呼叫追加('.'),MAP(范围(3, 30)”,PrtTf(“2 **%D= %.0f”,V:Valman,PoW(2,V:VAL)'))< /代码> . @ Remonn:此方法也适用.尝试<代码> PrimTf()但是,请注意,与for循环方法不同,要插入的所有字符串在实际追加之前都会全部填充到内存中?这不适用于范围(3,30)中的i的py;范围(1,10)中的j的py:vim.current.buffer.append(“2**%d=%d”%(i,2**j))
@remann:python不会使用这种oneliner。使用我在答案中编辑的方块符号。简单有效!
total = 0.0
for i in range(10):
   total += i*i
print total