如何简化这个粘贴计算器

时间:2015-01-10 16:52:54

标签: vim

我在vim中实现了一个命令,它将计算结果粘贴到你的文件中,即你输入

:CalP 34 * 89

它应该在光标后粘贴结果。

代码如下:

command! -nargs=+ CalP :call Calculator(<q-args>) | normal! p
py from math import *

fun Calculator(arg)
  redir @"
  execute "py print " a:arg
  redir END
  let @" = strpart(@", 1)
endfun

这可行,但比我想要的简单操作更麻烦,主要是因为:

  1. 我不知道将py print ...的输出重定向到"注册
  2. 的更好方法
  3. 我必须写execute "py print " a:arg,因为只有py print a:arg无法正常工作
  4. let @" = strpart(@", 1)删除py print创建的注册表前面的杂散换行符,理想情况下应将其删除
  5. 我认为这应该是可行的,但我不知道足够的vimscript。

2 个答案:

答案 0 :(得分:4)

这不需要脚本。在插入模式下,您可以使用<Ctrl-R>=34*89<CR>插入该计算的结果。

:help i_CTRL-R
:help expression

答案 1 :(得分:3)

我将第二个@Amadan的建议。如果你喜欢Python而不是Vimscript,你可以使用pyeval()函数,例如直接来自插入模式:

<C-R>=pyeval('34 * 89')<CR>

如果你想保留自定义命令,那也是可能的:

command! -nargs=+ CalP execute 'normal! a' . pyeval(<q-args>) . "\<Esc>"