CTRL+C: コピーまたは中断

CTRL+C: コピーまたは中断

LinuxとWindows CTRL +には、 C 使用するプログラムに応じて2つの異なる意味があります。一部のプログラム(主にGUIプログラム)では「コピー」を意味し、他のプログラム(ほとんどのコマンドラインツール)では「中断」または「終了」を意味します。

これは、GUIの使用からコマンドラインの使用に切り替える人にとって特に面倒です。 「コピー」は完全に安全な作業ですが、中断すると現在使用中のプログラムが終了し、潜在的に作業が壊れる可能性があるためです。

これらの不一致の理由は何であり、その根はどこにありますか?

ベストアンサー1

Ctrl+の「kill」の意味はCとても古いです。私の考えでは、Unixよりも古いようです。ウィキペディアTOPS-10に戻ると、1960年代後半にさかのぼります。この記事では、Ctrl+がC合理的な選択である理由について説明します。ASCIIコード、1963年出版、該当文字はETXであり、テキストの終わり。 「停止」を意味する文字が欠落しており、「このセグメントの入力終了」を意味する文字は、「現在の処理を中止する」を意味する合理的な選択である。

Ctrl+の「コピー」の意味はCXerox PARCに由来しています。現代的な形式のコピー - 貼り付けの発明者(そしてGUIの他のほとんどの基本)。正確にいつだったのかは分からないが、1970年代後半だっただろう。UX Stack Exchangeのこのスレッドコピー用のCキーバインディングの選択について議論することをお勧めします。

PARCはTOPS-10とUnix端末の既存の意味に基づいてcopy Ctrl+を拒否する理由はありません。C当時、オペレーティングシステムとアプリケーションはより多様であり、コンピュータを使用している人もはるかに少なかった。すべてのアプリケーションのキーバインディングに関する単一の標準に対する機会や要件はありません。Ctrl+ 広く使用されているアプリケーションの他の用途はC次のとおりです。単語別²とEmacsのモード固有のコマンド。すべて異なる要件があり、異なる環境で実行されるアプリケーション用に独立して設計されています。

次のコマンドを使用してターミナルキーバインディングを設定できます。stty注文する。ターミナルバインディングは、ターミナルが「料理」モードにあるときに有効になります。たとえば、このコマンドはstty intr ^GSIGINT信号を送信する文字をCtrl+の代わりGCtrl+に設定しますC。役割^GベルこれはASCIIで表され、端末に送信されたら「ベルを鳴らす」ことを意味します。 「現在の作業を中断」するためにEmacsが使用する文字です(原則:アプリケーションは、端末を介してユーザーにBELを送信し、ユーザーを中断するために端末を介してアプリケーションにBELを送信します)。端末に送信するときに標準的な意味はありません。

ほとんどのシェルはライン編集機能を提供するため、端末を生モードに設定します。フルスクリーンテキストモードアプリでも同様です。Ctrl+のG代わりにCtrl+を認識するようにこれらのアプリケーションを構成する必要があり、C一部のアプリケーションには構成できないキーバインディングがある場合があります。したがって、使用しているアプリケーションによっては、区切り文字の変更が可能または不可能になることがあります。

Ctrlもう1つのアプローチは、+キーグループに対して送信されるバイト順序を変更したり、何も送信せずにCコピー操作を実行するように端末を設定することです。Ctrl+を送信する別のキーセットを選択することもできますC(ノートブック以外のキーボードがある場合は、リモコンPause/Breakキーを使用できます)。すべての端末をこの方法で設定できるわけではありません。

1 Ctrl-S(XOFF)は停止を意味しますが、アプリケーションではなく端末に送信されます。
² 次の行の横の+ は次の行を表し、+ と + は前の行とページの上に移動を示します。このキーはQWERTYキーボードにあるために選択されました。CtrlXCtrlECtrlR
³Nitpick :cookedモードは、割り込み信号を送信する文字を含む複数文字の解釈を含む一連の端末設定です。

おすすめ記事