CTRL + Cがvimを終了しないのはなぜですか? [コピー]

CTRL + Cがvimを終了しないのはなぜですか? [コピー]

escEnterを押してからエディタを:q!終了できることを知っています。vimこの問題

ただし、標準的な慣例は、ctrl+を押すとプログラムが終了し、現在実行中のプロセスにaが送信されることです。cSIGINT

たとえば、topおよびtail -fすべてpingこの規則に従います。

私の質問はこれです:なぜこの確立された規則に従わないのですvimか?歴史的な理由はありますか、それとも別の理由がありますか?

私の考えでは、他のすべてと同様に、この標準的な規則に従うことで、新しいユーザーに多くの混乱を避けることができます。

(私たちがこれを行うとき、なぜ最初は起こらず、SIGINTこのように起こるのですかSIGTERM?)

答え1

私の質問は:なぜvimはこの確立された規則に従わないのですか?歴史的な理由はありますか、それとも別の理由がありますか?

vimこれは、対話型プログラムでは、Control-Cがプログラム全体ではなく現在のコマンドを中断する別の古くて確立された規則に従うためです。対話型シェルもこの規則に従います。 Control-Cはシェルを終了しませんが、実行中または実行したいコマンドを終了します。

この規則に従わないプログラムは、SIGINTユーザーに「本当に終了しますか?」あるいは、「終了するには終了を使用してください」などを尋ねることで恐怖を軽減しようとすることがよくあります。

Control-Cについて非常によく確立された他の規則は、それを他のコマンドのプレフィックスとして使用するか(Control-GがControl-Cとして機能するemacsに触発されたプログラムのように)選択をクリップボードにコピーすることです。です。

関連情報