シェルコマンド(コンパイラの実行とシステムの構築を対象とする)を実行し、その出力をキャプチャする必要がある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
か?