シェルコマンド(コンパイラの実行とシステムの構築を対象とする)を実行し、その出力をキャプチャする必要があるVimプラグインを開発しています。また、コマンドの stdout と stderr を実行時に表示したいので、Ruby を使用してコマンドを実行しています (ただし、Vim の:echoコマンドで表示しているので、stderr のハイライトを設定できます)。
とにかく、ユーザーが途中でコマンドをキャンセルできるようにしたい。プログラムのキャンセルは伝統的に で行われCtrl+C、Vim ではユーザーが をCtrl+Cスローして現在実行中の vimscript をキャンセルすることができますVim:Interrupt。Vim の:sleepコマンドを使用して、ユーザーCtrl+Cが実行中のコマンドをキャンセルしたい場合に押すことを許可し、キャッチしてVim:Interrupt、それに応じて続行したいと考えています。
Ctrl+C私の問題は、挿入モードではないときにVimを押すと、Vimが表示Type :quit<Enter> to exit Vimされ、以前にエコーされたメッセージがすべて消去されることです。これは私にとって問題です。なぜなら、ユーザーが表示をキャンセルする前にコマンドが stdout と stderr に入れた出力を保持したいからです (そして、コマンドがキャンセルされたというメッセージを追加するかもしれません)。
このメッセージを一時的に無効にして、ユーザーが押す前にエコーされたものを保持する方法はありますCtrl+Cか?