VimScript と Mathematica スクリプト インターフェイスを使用して、独自のソリューションをまとめました。これは Linux で機能します。他の OS の場合は、必要に応じて変更してください。
まず、~/bin/mathpipe.m
などのファイルを作成します。 標準入力から Mathematica 式を取得し、結果を標準出力に出力します。私の知る限り、これを行う組み込みの方法はありません。間違っている場合は修正してください。私は Mathematica 10 を使用しています。適切な hashbang 行を確認するためのドキュメント (MathematicaScript
から変更されている可能性があります) wolfram
まで ).
#!/usr/local/bin/MathematicaScript -script
(* read standard input, one line at a time, evaluating each one.
print the InputForm of the evaluated last line. *)
val = Input[];
ret = val;
While[val = Input[]; val =!= EndOfFile, ret = val];
Print[ret];
chmod +x ~/bin/mathpipe.m
を行う .走れる
$ echo "2+2" | ~/bin/mathpipe.m
4
さて、.vimrc
で 1 つのヘルパー関数を追加します:
function! s:get_visual_selection()
" from http://stackoverflow.com/a/6271254/371334
let [lnum1, col1] = getpos("'<")[1:2]
let [lnum2, col2] = getpos("'>")[1:2]
let lines = getline(lnum1, lnum2)
let lines[-1] = lines[-1][: col2 - (&selection == 'inclusive' ? 1 : 2)]
let lines[0] = lines[0][col1 - 1:]
"return join(lines, "\n")
return lines
endfunction
これは、現在の (または最新の) 視覚的な選択を取得し、文字列値のリストとして返します。これにより、選択した式の評価をエコーするコマンドを定義できます (.vimrc
にも入ります)。 ):
function! Mathpipe1()
let mathpipe = s:get_visual_selection()
call writefile(mathpipe, '/tmp/mathpipein')
silent !cat /tmp/mathpipein | ~/bin/mathpipe.m
endfunction
この行を追加して、関数を <leader>m
にマップします キー シーケンス:
xnoremap <leader>m :<c-h><c-h><c-h><c-h><c-h>call Mathpipe1()<CR>
では、Vim で Mathematica 式のテキストを視覚的に選択して <leader>m
を押すと、 (通常は \m
)、結果は ex コマンドラインの出力領域に表示されます。複数行の選択も機能します。
結果を現在の Vim バッファーの選択したもののすぐ下に出力したい場合は、それも可能です:
function! Mathpipe2()
let mathpipe = s:get_visual_selection()
call writefile(mathpipe, '/tmp/mathpipein')
silent !cat /tmp/mathpipein | ~/bin/mathpipe.m > /tmp/mathpipeout
normal `>
r /tmp/mathpipeout
endfunction
xnoremap <leader>M :<c-h><c-h><c-h><c-h><c-h>call Mathpipe2()<CR>
これで、テキストを選択して <leader>M
を押すことができます 評価は次の行に出力されます。
このパッケージは Vim と Mathematica の統合を提供します:
- http://library.wolfram.com/infocenter/MathSource/2584/
パッケージの説明からの引用:
<ブロック引用>これは Vim に組み込まれた Mathematica のフロント エンドです。Vim はハイエンドのプログラマ向けエディタであり、vi との互換性が高く、多くの追加機能を備えています。フロント エンドはエディターの単なるアドオンであり、あらゆる種類の ASCII ファイルの標準エディターとして引き続き使用できます。
フロント エンドは、任意の端末 (もちろん、xterms を含む) で実行される「テキスト モード」アプリケーションです。機能は、グラフィックスのない標準のノートブック インターフェイスに似ています (ただし、外部の組み込みサポートがあります)。視聴者は Ghostview を好みます) が、大幅に強化された編集機能を備えています。
このパッケージは 1999 年のものです。それは Vim 5 と Mathematica 4 の時代です。今日はそのままでは機能しない可能性が非常に高いですが、Vim 8 と Mathematica 11 で同様のものを実装するための良い出発点になるはずです。