GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ausdrücke in Vim auswerten

Ich habe meine eigene Lösung mit VimScript und der Skriptschnittstelle von Mathematica zusammengestellt. Dies funktioniert für Linux; für andere Betriebssysteme nach Bedarf ändern.

Zuerst erstellen wir eine Datei, sagen wir ~/bin/mathpipe.m Dies nimmt einen Mathematica-Ausdruck von der Standardeingabe und gibt das Ergebnis auf der Standardausgabe aus. Soweit ich weiß, gibt es dafür keine eingebaute Möglichkeit, bitte korrigieren Sie mich, wenn ich falsch liege. Ich verwende Mathematica 10; konsultieren Sie die Dokumentation, um die richtige Hashbang-Zeile für Sie zu überprüfen (sie hat sich möglicherweise von MathematicaScript geändert bis 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];

Führen Sie chmod +x ~/bin/mathpipe.m aus .Wir können rennen

$ echo "2+2" | ~/bin/mathpipe.m
4

Jetzt in unserem .vimrc Wir fügen eine Hilfsfunktion hinzu:

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

Dies ruft die aktuelle (oder neueste) visuelle Auswahl ab und gibt sie als Liste von Zeichenfolgenwerten zurück. Damit können wir einen Befehl definieren, um die Auswertung eines ausgewählten Ausdrucks wiederzugeben (geht auch in .vimrc ):

function! Mathpipe1()
  let mathpipe = s:get_visual_selection()
  call writefile(mathpipe, '/tmp/mathpipein')
  silent !cat /tmp/mathpipein | ~/bin/mathpipe.m
endfunction

Fügen Sie diese Zeile hinzu, um die Funktion <leader>m zuzuordnen Tastenfolge:

xnoremap <leader>m :<c-h><c-h><c-h><c-h><c-h>call Mathpipe1()<CR>

Wenn wir also jetzt visuell einen Text in Vim auswählen, der ein Mathematica-Ausdruck ist, und <leader>m drücken (normalerweise \m ), das Ergebnis wird im Ausgabebereich auf der Ex-Befehlszeile angezeigt. Mehrzeilige Auswahlen funktionieren auch.

Wenn wir möchten, dass das Ergebnis im aktuellen Vim-Puffer direkt unter dem von uns ausgewählten ausgegeben wird, können wir das auch tun:

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>

Damit können wir Text auswählen, drücken Sie <leader>M und die Bewertung wird in der nächsten Zeile gedruckt.


Dieses Paket bietet Vim-Mathematica-Integration:

  • http://library.wolfram.com/infocenter/MathSource/2584/

Zitat aus der Paketbeschreibung:

Dies ist ein Mathematica-Frontend, das in Vim eingebaut ist, einem High-End-Editor für Programmierer, hochkompatibel zu vi, aber mit vielen zusätzlichen Funktionen. Das Frontend ist nur ein Add-On für den Editor, der weiterhin als Standard-Editor für alle Arten von ASCII-Dateien verwendet werden kann.

Das Frontend ist eine "Textmodus"-Anwendung, die auf jedem Terminal läuft (natürlich einschließlich xterms). Die Funktionalität ist ähnlich der Standard-Notebook-Oberfläche, ohne Grafik (es gibt jedoch eine eingebaute Unterstützung für externe Betrachter wie Ghostview), aber mit stark erweiterten Bearbeitungsfunktionen.

Das Paket stammt aus dem Jahr 1999. Das ist die Ära von Vim 5 und Mathematica 4. Es funktioniert heute sehr wahrscheinlich nicht sofort, aber es sollte ein guter Ausgangspunkt sein, um etwas Ähnliches mit Vim 8 und Mathematica 11 zu implementieren. P>

Linux
  1. Vim Latex:Quickfix deaktivieren?

  2. Vi durch Vim ersetzen?

  3. wie man pylint in vim verwendet

  4. Öffnen Sie Vim aus einem Bash-Shell-Skript heraus

  5. Vim steckt im Einfügemodus fest

So löschen Sie Zeilen in Vim / Vi

So suchen Sie in Vim / Vi

Wie man von Vim aus auf die Shell zugreift oder externe Befehle ausführt

Grundlagen des Vim-Editors

VIM-Editor

Aktivieren Sie die Syntaxhervorhebung in Vim