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に触発されたプログラムのように)選択をクリップボードにコピーすることです。です。