2011-12-14 9 views
6

Javascriptでインターフェイスを構築してキープレスを収集し、それらをリモートvimインスタンスに送信し、インスタンスに変更を返すようにしたいと考えています。私はブラウザとサーバーのコミュニケーションとjavascriptをすべて実装できると確信しています---データをvimに渡す方法と、それを私に返す方法についてはわかりません。プログラムでvimにコマンドを送信する

何か指摘したいと思います!ありがとう

を編集します。最初の実装はGithubにあります。

+2

それを試したことはありませんが、vimを['+ clientserver' support](http://vimdoc.sourceforge.net/htmldoc/remote.html)でコンパイルすると、クライアント/サーバモードで実行できます。簡単な例については、[このブログの投稿](http://ajayfromiiit.wordpress.com/2009/10/21/server-and-client-mode-in-vim/)を参照してください。 –

答えて

18

TextAid(具体的にはPerlサーバー)をご覧ください。多分あなたは役に立つアイデアを見つけるでしょう。

--re-EDIT--

私はあなたのアイデアが好きなので、私は少しさらに見てきました。あなたのリモートボックスの

$ vim --servername MYSERVER /path/to/tempfile` 

:Vimを仮に

+clientserverでコンパイルされている、あなたはこのようにVimを起動することができます。 Vimはサーバモードで起動され、あなたはそれのようコマンドを送信することができます

$ vim --servername MYSERVER --remote-send 'ihello<Esc>' 

を持っている:最初の行に

hello 

を、あなたが送信した場合:

$ vim --servername MYSERVER --remote-send 'A world<Esc>' 

あなたが得ます:

hello world 

送信者:

$ vim --servername MYSERVER --remote-send ':%s/hello/goodbye cruel<CR>' 

は、あなたが得る:あなたが送信する場合

hello world 
hello world 
hello world 
hello world 
hello world 

$ vim --servername MYSERVER --remote-send 'yy5p' 

あなたが得る一種のクールで

goodbye cruel world 
goodbye cruel world 
goodbye cruel world 
goodbye cruel world 
goodbye cruel world 

いますが、返送する必要がありますあなたが書いたことによって行うバッファの新しい状態g:各コマンドの後に、一時ファイルをクライアントに送り返すこれは、あなたのサーバーでの多くの読み書きを意味します。また、バッファの内容を各「変更」の外部プロセスに送信するマクロを記述することもできます。あなたが代わりにあなたが見ているだろう私の答えを棄却のリンクをたどっていた場合--EDIT--

そのHTTP経由でPerlのサーバーへのテキストエリアの内容を送信することにより、作品上記の拡張子。

Vimがローカルサーバまたは遠隔サーバにある場合は、まったく問題はないと思います。

サーバは、それを一時ファイルに書き込みます。この一時ファイルは、Vimで開かれます。

Vimがファイルを書き込むと、その内容はサーバーによって拡張機能に返されます。

あなたのJSの部分は、テキストエリアの内容を取得し、AJAX POST要求を介してサーバーに送信し、回答を待ってテキストエリアの内容を更新します。

実際、上記のスクリプトをそのまま使用することもできます。または、少なくとも自分のアプリの出発点にしてください。

+0

ローカルのマシンユーティリティではなく、クラウドのvimエディタを構築したいと思います。ありがとうございます –

+0

あなたの質問を更新してください。その中に雲Vimを作りたいと言っているものは何もない。とにかく雲Vimとは何ですか? – romainl

+0

なぜ誰かがこの回答を否定しましたか? Mah。 – lucapette

関連する問題