首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何简化粘贴计算器

如何简化粘贴计算器
EN

Stack Overflow用户
提问于 2015-01-10 16:52:53
回答 2查看 96关注 0票数 1

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

代码语言:javascript
复制
:CalP 34 * 89

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

守则如下:

代码语言:javascript
复制
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. 我必须写execute "py print " a:arg,因为py print a:arg不工作
  3. let @" = strpart(@", 1)移除py print创建的寄存器前面的偏离换行符,理想情况下,这应该被删除。

我认为这应该是可以做到的一句话,但我不知道足够的vimscript。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-10 17:12:59

我会同意阿马丹的建议。如果您更喜欢Python而不是Vimscript,您可以使用pyeval()函数,例如直接从插入模式:

代码语言:javascript
复制
<C-R>=pyeval('34 * 89')<CR>

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

代码语言:javascript
复制
command! -nargs=+ CalP execute 'normal! a' . pyeval(<q-args>) . "\<Esc>"
票数 3
EN

Stack Overflow用户

发布于 2015-01-10 16:57:45

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

代码语言:javascript
复制
:help i_CTRL-R
:help expression
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27878643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档