1

テキストの行を強調表示してclojureで実行できるvim関数を設定しています。関数は次のとおりです。

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

これに伴う問題は、起動が遅く、実行するたびに新しいclojureセッションが生成されるため、以前に実行した関数を呼び出すことができないことです。理想的には、vimから入力を送信し、そこから出力を取得できる非表示のreplを実行する必要があります。gnu screenについて学び、それが役立つと思いましたが、ある画面ウィンドウから別の画面ウィンドウに入力を送信する方法がわかりません。

私の問題を明確にするために、次のclojureを使用してください。

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

この行をvimで強調表示して、実行中のreplで実行できるようにしたいと思います。以下の行を呼び出して、同じreplで実行できるようにしたいと思います。

(add2 4 5)

その後、関数の出力を取得できるようにしたいと思います。

それで、基本的に、私の質問は、ある画面ウィンドウから別の画面ウィンドウに入力を送信するにはどうすればよいですか?

4

4 に答える 4

3

ジェイク・マクラリーの提案は良いものです。おそらく同じ考えに基づいて、利用可能な他のスクリプトもいくつかあります。

VimClojureは、「vimバッファーでrepl」を実行すると言います

Slimv、特にClojureをサポート

ゴリラ、上記のVimClojureはゴリラに基づいていると思います

VimClojureが実際にあなたが望むことをして、結果をScreenからVimのバッファに送り返すかどうかはわかりません。そのための1つの方法は、Vimのクライアントサーバー機能を使用して何かを調整することだと思います。これは--remote-sendフラグで可能です。見る:

:h client-server
:h --remote-send
于 2010-12-01T00:04:16.900 に答える
2

私が探していたものを見つけました。これを端末から実行して、文字列を画面ウィンドウのstdinに直接送信できます。

$ screen -X stuff "ls -l\015" # \015 sends a carrige return.
于 2010-12-02T04:11:11.927 に答える
2

正確な答えはわかりませんが、slime.vimを見て、そこから何かを学ぶことができるかどうかを確認する価値があるかもしれません。

それについてのブログ投稿

vim.orgのスクリプト

于 2010-11-30T20:46:14.240 に答える
0

Conquehttp://code.google.com/p/conque/にも興味があるかもしれませ

Scalaに使用します

于 2010-12-30T20:38:28.823 に答える