用于插入ascii-art公式的vim脚本

时间:2014-03-28 20:28:05

标签: formula vim maxima ascii-art

我尽可能多地使用Vim来学习它 今天我不得不写很多数学函数。我把它们写成f(x)=e^(x/sqrt(x))(例如无意义),但这很难读。

我的想法是使用maxima的控制台输出并将其插入文本中以获得类似:

             x
          -------
          sqrt(x)
f(x) := e

非常容易阅读。

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

我对vimscript完全没有经验。我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

只要你有一个外部命令将(渲染的公式)输出返回到 stdout :read! {cmd}命令就会插入输出(在当前行之下或在前面的{ {1}}:

[range]

您也可以为此制作自定义命令:

:read! maxima --very-quiet -r "formula"

答案 1 :(得分:1)

我在~/.vimrc文件中使用它:

 " 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()将其参数的控制台输出作为returnvalue返回,并将其参数的返回值放在v:shell_error中。