vimに別のターミナルウィンドウで "make"コマンドを実行させる方法はありますか?

vimに別のターミナルウィンドウで "make"コマンドを実行させる方法はありますか?

私は主にC / C ++プログラミングのためのエディタとしてvimを使います。残念ながら、私はビルドプロセスがどのように機能するかはあまり満足していません。:makemakeプロセスを実行するために入力(またはキーにマッピング)できることがわかります。ただし、このコマンドは適切な強調表示なしで同じターミナルウィンドウでビルドプロセスを実行するため、これはうまくいきません。したがって、私は通常、2番目のモニタの別のウィンドウでmakeコマンドを実行して、メインのVimウィンドウでソースコードをスクロールしながら、1つのウィンドウでコンパイラが表示するビルドエラーを正しく強調表示して表示できます。フォーカスを別のウィンドウに変更してmakeコマンドを入力する必要があるため、これは非常に面倒な作業でもあります。

今私の質問は次のとおりです。フォーカスを変更せずにvimに別のウィンドウでmakeコマンドを実行させることはできますか?これにより、「別ウィンドウでビルド」コマンドをvimのキーにマップし、1回のキーを押すだけですべての操作を実行できます。

私のシステムは、i3をDWMとして使用するManjaro Linuxです。

(この記事をstackoverflowに投稿するのかここに投稿するのかわかりません。間違ったフォーラムであれば許してください。)

答え1

名前付きパイプを使用してください。

  1. 端末でVimを使用してソースコードを開きます。
  2. 出力したい2番目の端末を開き、を使用してmake新しいパイプを作成しますmkfifo mypipe
  3. 2番目の端末では、watch --color -n 0.3 'cat mypipe'常にNamed Pipeを読むために実行してください。
  4. 最初の端末で:!script -q -c "make" mypipe > /dev/nullソースコードへの変更を保存し、Vimで実行します。

script私達は使用しなければならないカラー出力を維持するようにプログラムをだます。。バージョンを確認してくださいwatch サポートカラー

答え2

次の項目に追加できます~/.vimrc

nnoremap <Space> :vert :term make<CR><C-W><C-w>

ここでは、Spaceメイン:vert :term make<CR><C-W><C-w>コマンドを再マップします。これは次のことを意味します。

  • :vert垂直分割を実行します。
  • :term新しいウィンドウで端末を起動します。
  • make<CR>makeこの端末で実行してください。
  • <C-W><C-w>フォーカスを元のウィンドウに戻します。

これがあなたが望むものであることを願っています。もちろん、必要なキー/組み合わせを選択し(必須ではないSpace)、水平分割を好む場合は、:vertビットを削除するだけです。

関連情報