web-dev-qa-db-ja.com

Ctrl + VがBashに貼り付けられないのはなぜですか(Linuxシェル)。

クリップボードに何かをコピーしてを押すと Ctrl + V Bashでは、何も起こりません。ただし、右クリックして貼り付けを選択すると、その作業は実行されます。

どうして? Linuxでのこの振る舞いの背後には、合理的な問題(あると思います)がありますか?

184
Yasser Zamani

物理的な 端末 の時代には、セッション全体のクリップボードは存在せず、内部コピー/貼り付けをサポートしているプログラムはほとんどなく、しばしば "バッファ"や "キルリング"の名前で - 。たとえば、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ライクな端末で同じことをするのはもっと問題があるでしょう。

350
grawity

つかいます CtrlShiftV 貼り付け用。

Ctrl 他の文字では、通常シェルによって特殊な機能のために使用されます。

45
Akash

これが一般的な端末でのあなたの汎用コピーペースト設定です:

gnome-terminal(Linuxで最も人気があります)
コピー: CtrlShiftC
貼り付け: CtrlShiftV
:コピー先選択 middle-click 貼り付けも機能しますが、代わりのクリップボードを使用します。

PuTTY(Windowsで最も人気のある端末)
コピー:(マウスで選択、キーボード操作なし)
貼り付け: Right-click (より確実に: shiftRight-click
:マウス入力を受け取るアプリケーション(vimlinksなど)は盗むことができます Right-click - shiftRight-click どのアプリでも常に動作します。

OSXターミナル
コピー: AppleC
貼り付け: AppleV
注:マウスを制御するアプリケーション(vimlinksなど)は、テキストを選択する意味を上書きすることがあります。この場合、コピーは期待どおりには機能しません。そのような場合は、押し続けます Control マウスをドラッグして選択します。アプリとマウスの対話は端末設定でデフォルトで無効になっているので、ほとんどの人はこれについて知らないでしょう。

17
tylerl

それは深い根ざした伝統です。 Ctrl キーを文字と一緒に使用すると、大文字のASCIIの値から64を引いて検出されたASCII制御文字が生成されます。この計算マップ Ctrl - A 1などに。例えば Ctrl - I です Tab そして Ctrl - J 改行します。

同様の伝統はありません Ctrl - Shift。 Ctrl - Shift - V 特定の文字を生成することは想定されていません。

ターミナルエミュレータは、透過的に以下を通過することによって伝統をサポートしなければなりません。 Ctrl その端末ウィンドウを介して操作されているプログラムへの文字入力として表示させるという規則。端末ベースのプログラムは、制御キーをコマンドにマップします。例えば、Bashは Ctrl - V 「文字通り次の文字を取る」という意味のコマンドとして。これにより、コマンドラインに制御文字を埋め込むことができます。端末が自分の使用のために制御キーを盗むと、そのようなコマンドは利用できなくなります。だから傍受 Ctrl - V メタ関数のために(少なくともデフォルトの設定で)問題外です。

ただし、端末エミュレータは自由に傍受できます Ctrl - Shift - V これはキャラクターを生成することは期待されていません。 Ctrl - Shift - V 標準ではありません。これはGnome Terminalのものです(他の端末にあるかもしれません)。

XベースのUnixデスクトップでは、コピーにコマンドは必要ないというのが慣例です。あなたはテキストを選択するだけです。そして中央のボタンはそのテキストを他の場所に貼り付けます。あなたはそれがXterm、Gnomeターミナル、そしてFirefoxで同様に働くことがわかるでしょう。

Ctrl - V Microsoft Windowsの慣例であり、これは Apple - V Macintoshから。

16
Kaz

私にとって、シェルにペーストをコピーする最も簡単な方法は次のとおりです。

必要なコードを選択してから、をクリックして貼り付けます。 mouse-middle-key

3
Pedro Lobito

コピー&ペーストをするためにキーボードの挿入ボタンを使うことができます(古いキーボードではなくてもかまいません)

コピー: CtrlInsert
貼り付け: CtrlShiftInsert

2
Bharat

あなたが怠惰を感じていて、テキスト文書、スクリプトまたはウェブまたはフォーラムからコマンドを選択するならば、あなたはマウスの中ボタンを使うこともできます。目的のコマンドを選択したら、端末に移動してマウスの中央ボタンをクリックします。私はPuppy Linuxを使っているのでこの方法を使っています。PuppyLinuxは通常の右クリック&ペーストの動作をサポートしていないようです。ターミナルウィンドウではなく、ファイルハンドラウィンドウで行います。理由はわかりませんが、中ボタンの方法について知ったのはとても嬉しいことです。 ;-)

1
m1cha3ll0w3