首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入ascii-art公式的vim脚本

插入ascii-art公式的vim脚本
EN

Stack Overflow用户
提问于 2014-03-28 20:28:04
回答 2查看 686关注 0票数 1

我尽可能多地使用Vim来学习它。

今天我不得不写很多数学函数。我写它们像f(x)=e^(x/sqrt(x)) (例如,无意义函数),但这很难读懂。

我的想法是使用maxima的控制台输出并将其插入文本以获得如下内容:

代码语言:javascript
复制
             x
          -------
          sqrt(x)
f(x) := e

这很容易读懂。

我已经知道了很多maxima命令,所以用maxima语法编写公式并在这个精彩的输出中得到它们将是非常容易和有成效的:)

我完全没有使用vimscript的经验。我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-28 20:28:04

我在我的~/.vimrc文件中使用这个:

代码语言:javascript
复制
 " calls maxima --very-quit -r "[ARG];"
 function! AsciiMath(formula)
   let cmdln='maxima --very-quiet -r "'.a:formula.';"'
   let @a=system(cmdln)
   if !v:shell_error
 "    echo @a
     put a
   else
     echo '"'.a:formula.'" is an invalid maxima expression"'
   endif
 endfunction 

并称之为:

:call AsciiMath("f(x):=e^(x/sqrt(x))")

我认为这个函数是可以理解的,但也有一些棘手的部分:

  • put需要一个寄存器作为参数参见:h registers:h put
  • 参数不能像formula那样使用,它们需要前缀(命名空间) a:a:formula一样使用它。
  • 如果您配置了vim来重新加载.vimrc文件,那么您应该使用function!而不是function,因为否则您将得到一个错误(类似于"FUNCTIONNAME已经定义好了“)。
  • system()以返回值的形式返回其参数的控制台输出,并将其参数的返回值放在v:shell_error中。
票数 3
EN

Stack Overflow用户

发布于 2014-03-28 20:37:57

只要您有一个将(呈现公式)输出返回到stdout的外部命令,:read! {cmd}命令将插入输出(在当前行下面或在前面的[range] )。

代码语言:javascript
复制
:read! maxima --very-quiet -r "formula"

您也可以为此创建一个自定义命令:

代码语言:javascript
复制
:command! -nargs=1 -range Maxima execute '<line1>,<line2>read! maxima --very-quiet -r' shellescape(<q-args>, 1)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22722612

复制
相关文章

相似问题

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