Sende Eingabe in ein Bildschirmfenster von Vim
-
29-09-2019 - |
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?
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.
Sie können auch in Conque http://code.google.com/p/conque/ interessiert sein
Ich benutze es für Scala