Bash(Linuxシェル)でCtrl + Vでペーストできないのはなぜですか?

bash clipboard copy-paste keyboard-shortcuts linux

クリップボードに何かをコピーして、BashでCtrl + Vを押しても何も起こりません

なぜですか?Linuxでのこの動作の背後には、何か合理的な問題があるのでしょうか(きっとあると思います)?

  201  Yasser Zamani  2012-05-07


ベストアンサー

端末が物理的に存在していた時代には、セッション全体のクリップボードは存在せず、内部コピー/ペーストをサポートしているプログラムはごくわずかで、しばしば “バッファ “や “キルリング “という名前で呼ばれ、さまざまな異なるキーストロークを使用していました。例えば、bash シェルは CtrlKCtrlU を使って “kill” (cut) し、CtrlY を使って “yank” (paste) します; これは the emacs editor に由来します

CtrlCUnix のほぼすべての場所に、“割り込み “キーがあり、現在のプログラムや操作をキャンセルするために使用されていました。CtrlVキーは、しばしば “verbatim insert “を意味します。例えば、通常の Esc は vi エディタでコマンドモードに切り替わりますが、 CtrlV, EscESC の文字を文書に挿入します

セッション全体のクリップボードからコピーするためのCtrlCとペーストするためのCtrlVの使用は、1983年にMac OSで、1990年にMicrosoft Windows 3.xで導入されました。(それ以前の Windows バージョン (1.x と 2.x) と IBM OS/2 では、IBM CUAIBM CUA キーのみがサポートされていましたが、これらのショートカットはすべての Windows バージョンでサポートされています)

クリップボードをサポートする GUI がついに Unix に到達したとき、すでに多くのターミナルプログラムで Ctrl キープレスが使われていました。また、Xのグラフィカル・インターフェースは、「選択」と「バッファのカット」という、やや異なるメカニズムを持っていました。今でも1つのプログラムでテキストを選択して、マウスの真ん中のボタンで挿入することができ、明示的なコピーアクションはありません

要するに、Xterm や GNOME Terminal が書かれた頃には (あなたは後者を使っていると思いますが)、 CtrlV は既に何年も前から全く異なる意味を持っており、変更することはできませんでした。さらに、テキストをコピーする別の方法である「選択」は X11 ではすでに存在していたので、明示的なコピー/貼り付け動作は Windows ではそれほど重要ではないと考えられていたのかもしれません。これは、異なるキーボードショートカットを選択しなければならないことを意味します – 例えば、GNOME Terminal のような最新のターミナルプログラムでは、CtrlShiftCCtrlShiftV を使用しています。(Xterm を使っている場合は、XTerm*vt100*translations Xresource を使って、同じショートカットを手動で追加することができます。Rxvt にはそのようなオプションはありません)。)

(ほとんどの X11 ツールキットは CUA の “コピー” と “ペースト” キーもサポートしています。残念ながら、実装はかなり矛盾しています – CtrlIns はほとんどのプログラム (GTK, Qt4, Xaw では無視されます) では “クリップボード” にコピーしますが、ShiftIns はほとんどの GTK と Qt4 プログラムでは “プライマリ選択” から貼り付けますが、Firefox では “クリップボード” から、そして今では obsolete になった Xaw では今では obsolete になったカットバッファからの貼り付けです)


とはいえ、いくつかの端末やコンソール (特に Windows 10 コンソール) はこれらのキーをサポートしています。Windows コンソールには常に “マーク/選択 “モードがありましたが、 CtrlC にはコンテキストに応じて二つの意味があります – 通常のモードでは割り込みを送信し、選択モードではクリップボードにコピーします (Enter のように)

一方、Windows のコマンドラインツールは CtrlV を何かに使うことはありませんでしたので、何にも邪魔されずに “貼り付け” することができました。しかし、Unix 系の端末で同じことをするのはもっと問題があるでしょう

376  user1686  2012-05-07


貼り付けにはCtrlShiftVを使用してください

Ctrlを他の文字と一緒に使うと、通常はシェルが特殊な関数に使用します

49  Akash  2012-05-07


人気のある端末での汎用コピペ設定はこちら

gnome-terminal (Linuxで最も普及している) Copy.CtrlShiftC 貼り付け。CtrlShiftV 注意: 選択してコピーして貼り付ける middle-click も動作しますが、代替のクリップボードを使っています

PuTTY (Windowsで最も普及している端末) Copy.(マウスで選択、キーボード操作なし) ペースト。Right-click (あるいはより確実に: shiftRight-click) 注意: マウス入力を取るアプリ (vimlinks のような) は Right-click を盗むことができます — shiftRight-click はどのアプリでも常に動作します

OSXターミナル コピー。AppleC 貼り付け。AppleV 注意: マウス操作を行うアプリ(vimlinks のような)は、テキストを選択するという意味を上書きしている場合があり、その場合、コピーは期待通りに動作しません。そのような場合は、Controlを押しながらマウスをドラッグして選択してください。アプリとのマウスのやりとりはターミナルの設定ではデフォルトで無効になっているので、ほとんどの人はこのことに気づかないでしょう

22  tylerl  2012-05-07


文字と一緒にCtrlキーを押すと、大文字の文字のASCII値から64を引いたASCII制御文字が生成されるというのは根強い伝統です。この計算は、CtrlAを1にマッピングします。例えば、CtrlITabであり、CtrlJはlinefeedです

CtrlShiftについても同様の伝統はありません。CtrlShiftVは、特定の文字を出すことは期待できません

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

しかし、ターミナルエミュレータは、文字を生成することを期待していない CtrlShiftV を自由に傍受することができます。CtrlShiftVは標準ではなく、Gnomeターミナルのものです(他のターミナルにもあるかもしれません)

XベースのUnixデスクトップでは、コピーするためのコマンドは必要ありません。テキストを選択するだけです。そして真ん中のボタンがそのテキストを他の場所に貼り付けます。Xterm、Gnome Terminal、Firefox のいずれでも動作することがわかります

CtrlVはMicrosoft Windowsの規約で、MacintoshのAppleVを真似たものです

17  Kaz  2012-05-07


私にとって、シェルでペーストをコピペする一番簡単な方法は

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

3  Pedro Lobito  2015-08-03


キーボードの挿入ボタンを使ってコピー&ペーストができます(古いキーボードでは欠落することがあります)

コピーします。CtrlInsert 貼り付け。CtrlShiftInsert

2  Bharat  2015-05-08


怠惰な気分で、テキスト文書、スクリプト、ウェブ、フォーラムのいずれかからコマンドを選択する場合は、マウスの真ん中のボタンを使用することもできます。私はパピーリナックスを使っているので、この方法を使っています。パピーリナックスは右クリック&ペーストの通常の動作をサポートしていないようです。)

1  m1cha3ll0w3  2015-05-19


タイトルとURLをコピーしました