質問: ctrl + vがbashに貼り付けられないのはなぜですか(linuxシェル)。 クリップボードに何かをコピーしてを押すと ctrl + v bashでは、何も起こりません。ただし、右クリックして貼り付けを選択すると、その作業は実行されます。どうして? linuxでのこの振る舞いの背後には、合理的な問題(あると思います)がありますか?
回答: 物理的な 端末 の時代には、セッション全体のクリップボードは存在せず、内部コピー/貼り付けをサポートしているプログラムはほとんどなく、しばしば "バッファ"や "キルリング"の名前で - 。たとえば、bashシェルは次のように使用します。 ctrlk または ctrlu 「殺す」(切り取る)ために、 ctrly 「ヤンク」(ペースト)これは emacsエディタ から来ています。ctrlc unixのほとんどどこにでも "interrupt"キー があり、これは現在のプログラムや操作をキャンセルするために使われていました。の ctrlv 多くの場合、キーは「逐語的挿入」を意味します。つまり、関連するアクションを実行せずに文字通り次の文字を挿入します。たとえば、通常の esc viエディタでコマンドモードに切り替えますが、 ctrlv、 esc ドキュメントにesc文字を挿入します。の用法 ctrlc コピーして ctrlv セッション全体のクリップボードから貼り付ける方法は、1983年にmac os、1990年にmicrosoft windows 3.xで導入されました。(以前のwindowsバージョン(1.xおよび2.x)、およびibm os/2のみ - ) ibm cua キー ctrlins コピーして shiftins 貼り付けるこれらのショートカットは、すべてのwindowsバージョンで引き続きサポートされています。)クリップボードをサポートするguiがついにunixに到達したとき、 ctrl キープレスはすでに多くの端末プログラムで使用されていました。さらに、xのグラフィカルインタフェースはいくらか 異なるメカニズム : "選択"と "カットバッファ"を持っていました。現在でも、明示的なコピー操作を行わずに、1つのプログラムでテキストを選択してマウスの中央ボタンを使用して挿入できます。要するに、xtermとgnome terminalが書かれた頃には(私はあなたが後者を使うと思います)、 ctrlv すでに持っていた何年もの間まったく異なる意味を持ち、変更することはできませんでした。さらに、テキストをコピーする別の方法 - 「選択」 - はx11にすでに存在していたので、明示的なコピー/貼り付けアクションはおそらくwindowsほど重要ではないと考えられていました。これは、異なるキーボードショートカットを選択しなければならなかったことを意味します - 例えば、gnome terminalのような最近のほとんどの端末プログラムは、 ctrlshiftc そして ctrlshiftv。 (xtermを使用している場合、xterm * vt100 * translations xリソースを使用して同じショートカットを手動で追加できます。rxvtにはそのようなオプションはありません。)(ほとんどのx11ツールキットは、端末プログラムと衝突しないcuaの "コピー"と "貼り付け"キーもサポートしています。残念ながら、実装はかなり矛盾しています - ctrlins ほとんどのプログラムで「クリップボード」にコピーします(gtk、qt4、xawでは無視されます)。しかしながら、 shiftins ほとんどのgtkおよびqt4プログラムでは「プライマリセレクション」から、しかしfirefoxでは「クリップボード」から、そして今では時代遅れのxawでは今は時代遅れのカットバッファから貼り付けられています。)すべてのことを言った、いくつかの端末またはコンソール(特に、windows 10コンソール)doこれらのキーをサポートします。 windowsコンソールは常に別の "マーク/選択"モードを持っていたので、 ctrlc 現在はコンテキストに基づいて2つの意味もあります。通常モードでは割り込みを送信し、選択モードではクリップボードにコピーします(ちょうど同じように)。 enter 慣れている)。一方、windowsのコマンドラインツールは、実際には決して使用されませんsed ctrlv なによりも、何も邪魔せずに「貼り付ける」ことになっていました。しかし、unixライクな端末で同じことをするのはもっと問題があるでしょう。