如何简化这个粘贴计算器
How to simplify this pasting calculator
我在 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
这可行,但比我想要的简单操作更混乱,主要是因为:
- 我不知道将
py print ...
的输出重定向到 "
寄存器的更好方法
- 我必须写
execute "py print " a:arg
因为 py print a:arg
行不通
let @" = strpart(@", 1)
删除了 py print
创建的寄存器前面的杂散换行符,理想情况下应该删除它
我认为这应该可以在一行中完成,但我对脚本的了解还不够vim。
这不需要脚本。在插入模式下,您可以使用 <Ctrl-R>=34*89<CR>
插入该计算的结果。
:help i_CTRL-R
:help expression
我赞同@Amadan 的建议。如果你更喜欢 Python 而不是 Vimscript,你可以使用 pyeval()
函数,例如直接从插入模式:
<C-R>=pyeval('34 * 89')<CR>
如果您想保留自定义命令,也可以:
command! -nargs=+ CalP execute 'normal! a' . pyeval(<q-args>) . "\<Esc>"
我在 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
这可行,但比我想要的简单操作更混乱,主要是因为:
- 我不知道将
py print ...
的输出重定向到"
寄存器的更好方法 - 我必须写
execute "py print " a:arg
因为py print a:arg
行不通 let @" = strpart(@", 1)
删除了py print
创建的寄存器前面的杂散换行符,理想情况下应该删除它
我认为这应该可以在一行中完成,但我对脚本的了解还不够vim。
这不需要脚本。在插入模式下,您可以使用 <Ctrl-R>=34*89<CR>
插入该计算的结果。
:help i_CTRL-R
:help expression
我赞同@Amadan 的建议。如果你更喜欢 Python 而不是 Vimscript,你可以使用 pyeval()
函数,例如直接从插入模式:
<C-R>=pyeval('34 * 89')<CR>
如果您想保留自定义命令,也可以:
command! -nargs=+ CalP execute 'normal! a' . pyeval(<q-args>) . "\<Esc>"