我尽可能多地使用Vim来学习它。
今天我不得不写很多数学函数。我写它们像f(x)=e^(x/sqrt(x)) (例如,无意义函数),但这很难读懂。
我的想法是使用maxima的控制台输出并将其插入文本以获得如下内容:
x
-------
sqrt(x)
f(x) := e这很容易读懂。
我已经知道了很多maxima命令,所以用maxima语法编写公式并在这个精彩的输出中得到它们将是非常容易和有成效的:)
我完全没有使用vimscript的经验。我该怎么做?
发布于 2014-03-28 20:28:04
我在我的~/.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 putformula那样使用,它们需要前缀(命名空间) a:像a:formula一样使用它。.vimrc文件,那么您应该使用function!而不是function,因为否则您将得到一个错误(类似于"FUNCTIONNAME已经定义好了“)。system()以返回值的形式返回其参数的控制台输出,并将其参数的返回值放在v:shell_error中。发布于 2014-03-28 20:37:57
只要您有一个将(呈现公式)输出返回到stdout的外部命令,:read! {cmd}命令将插入输出(在当前行下面或在前面的[range] )。
:read! maxima --very-quiet -r "formula"您也可以为此创建一个自定义命令:
:command! -nargs=1 -range Maxima execute '<line1>,<line2>read! maxima --very-quiet -r' shellescape(<q-args>, 1)https://stackoverflow.com/questions/22722612
复制相似问题