VIMから画面ウィンドウに入力を送信します
-
29-09-2019 - |
質問
VIM関数がセットアップされており、テキストの行を強調してClojureで実行できます。これが機能です:
function! Clojure_execline()
let cl = (getline(line(".")))
// ...
exec 'clojure -e "' . cl . '"'
endfunction
これの問題は、開始が遅いことであり、実行するたびに新しいClojureセッションが生成されるため、以前に実行した関数を呼び出すことができないことです。理想的には、VIMから入力を送信して出力を取得できる場所で、隠されたREPLが実行されたいと思います。 GNUの画面について学び、それが私を助けることができると思いましたが、ある画面ウィンドウから別の画面ウィンドウに入力を送信する方法がわかりません。
私の問題を明確にするには、このClojureのラインを取ります。
(defn add2 [x y] (+ x y))
VIMでこのラインを強調し、実行中のREPLで実行できるようにしたいと思います。下の行を呼び出して、同じREPLで実行してもらうことができます。
(add2 4 5)
その後、関数の出力を取得できるようにしたいと思います。
それで、基本的に、私の質問は、ある画面ウィンドウから入力を別の画面に送信するにはどうすればよいですか?
解決 3
私が探していたものを見つけました。これを端末から実行して、画面ウィンドウのstdinに文字列を直接送信できます。
$ screen -X stuff "ls -l\015" # \015 sends a carrige return.
他のヒント
ジェイク・マクラリーの提案は良いものです。また、おそらく同じアイデアに基づいて、他にもいくつかのスクリプトがあります。
vimclojure, 、それは「VIMバッファーでRepl」を行うと言う
と
Slimv, 、具体的にはClojureをサポートします
と
ゴリラ, 、上記のヴィムクロジュールはゴリラに基づいていると思います
Vimclojureが実際にあなたが望むことをしているかどうかはわかりません。それを行う1つの方法は、-Remote-Sendフラグで可能なVIMのクライアントサーバー機能を使用して何かをfinagleすることだと思います。見る:
:h client-server
:h --remote-send
コンクにも興味があるかもしれません http://code.google.com/p/conque/
Scalaに使用します