Vimには、プログラムを実行するための組み込みの方法があります。つまり:!start foo
、Windows用と:!bar &
Unix用です。しかし、私がそれらに関して抱えている問題は、それらがVimから焦点を奪うことです。ビルドとテストのスクリプトを起動したいのですが、スクリプトが機能し、コマンドウィンドウに出力が表示されている間は、手動でGVimに戻す必要はありません。
私は3つの可能な解決策を考えました:
- Auto-It / AutoHotkeyを使用して、フォーカスをGvimに戻します。残念ながら、これはWindowsでのみ機能し、脆弱です。
- ソースコードを監視する別のプロセスを用意し、そのプロセスがソースコードが変更されたときにスクリプトを自動的に起動するようにします。(新しいウィンドウを作成する別のプロセスはフォーカスを盗みません)。スクリプトを開始するまでファイルの書き込みを保留する必要があるため、これは少しギミックです。ソースに何も変更されていない場合でも、再テストする場合は、役に立たない変更を書き込むことがあります。
- クライアントサーバーアーキテクチャを使用します。このアーキテクチャでは、Vimがソケットなどを介してコマンドを送信します。これを行うための既存のクロスプラットフォームの方法がある場合、これは実際に私の好ましい解決策です。(ただし、このために追加のGVimインスタンスを実行したくないです。)
では、これを行うための良い方法は何でしょうか?AsyncCommanderを試しましたが、残念ながらフォーカスも奪われます。