GNU/Linux >> Linux の 問題 >  >> Linux

Vim 内で式を評価する

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 で同様のものを実装するための良い出発点になるはずです。


Linux
  1. Ubuntu 19.04 :vim を構成する

  2. Centos 7:vim を構成する

  3. vimでpylintを使用する方法

  1. バニラヴィムは楽しいです

  2. 正規表現の紹介

  3. Bash シェル スクリプト内から Vim を開く

  1. Syntax_highlight | Lpr?

  2. Vimラテックス:Quickfixを無効にしますか?

  3. ViをVimに置き換えますか?