Frage

Ich habe eine Vim-Funktion eingerichtet, in dem ich eine Textzeile markieren und in clojure auszuführen. Hier ist die Funktion:

 function! Clojure_execline()
     let cl = (getline(line(".")))
     // ...
     exec 'clojure -e "' . cl . '"'
 endfunction

Das Problem dabei ist, dass es langsam ist zu beginnen und weil es eine neue clojure Sitzung laicht jedes Mal wenn ich es laufen, kann ich nicht eine Funktion aufrufen ich vorher lief. Ich würde im Idealfall gerne für eine versteckte repl ausgeführt werden, wo ich eine Eingabe von vim schicken könnte und die Ausgabe von als auch abgerufen werden. Ich lernte über Gnu-Bildschirm und dachte, es könnte mir helfen, aber ich weiß nicht, wie eine Eingabe von einem Bildschirm zum anderen Fenster senden.

mein Problem zu klären, nehmen Sie diese Linie von Clojure:

(defn add2 [x y] (+ x y))

Ich möchte in der Lage sein, diese Linie in vim zu markieren und in einem laufenden repl auszuführen. Ich mag die Linie nennen unten zu können und habe es in der gleichen repl ausführen:

(add2 4 5)

Danach Ich möchte in der Lage sein, die Ausgabe der Funktion zu erhalten.

Also, im Grunde meine Frage ist, wie sende ich eine Eingabe von einem Bildschirm zum anderen Fenster?

War es hilfreich?

Lösung 3

Hat das, was ich suchte. Sie können diese von einem Terminal ausführen eine Zeichenfolge direkt an den stdin eines Bildschirmfenster senden:

$ screen -X stuff "ls -l\015" # \015 sends a carrige return.

Andere Tipps

Jake McCrary Vorschlag ist ein guter. Es gibt auch ein paar andere Skripte zur Verfügung, wahrscheinlich auf derselben Idee:

VimClojure , die sagt, es tut " Repl in einem vim-Puffer "

und

slimv unterstützt speziell Clojure

und

Gorilla , glaube ich VimClojure, oben , basiert auf Gorilla

Ich weiß nicht, ob VimClojure tatsächlich tut, was Sie wollen, Ergebnis wieder von Bildschirm zu senden in Vim zu puffern. Eine Möglichkeit, das zu tun, denke ich, würde finagle etwas sein, mit Vims Client-Server-Funktionalität, möglich mit dem --remote-Send-Flag. Siehe auch:

:h client-server
:h --remote-send

Ich habe keine genaue Antwort, aber es könnte sein, lohnt sich ein Blick auf slime.vim nehmen und sehen, ob etwas daraus gelernt werden kann.

Blog-Post über sie

Skript bei vim.org

Sie können auch in Conque http://code.google.com/p/conque/ interessiert sein

Ich benutze es für Scala

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top