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


192

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

どうして?Linuxでのこの動作の背後にある合理的な問題はありますか(確かにあります)。


25
Shift- Insertも動作します
bonyiii

33
Ctrl-Shift-V個人的には好きです。
アマロイ

3
ほとんどのシェル環境でShift + Insertを使用することもできます。
ファビアン

4
挿入キーがない場合はどうなりますか?
ベンラシコット

3
それはあまりにもWindowsのコマンドプロンプトでは動作しません
phuclv

回答:


360

物理端末の時代には、セッション全体のクリップボードは存在せず、多くの場合「バッファ」または「キルリング」という名前で内部コピー/貼り付けをサポートし、さまざまなキーストロークを使用したプログラムはほとんどありませんでした。たとえば、bashシェルは、CtrlKまたはCtrlUを使用して「kill」(カット)、CtrlY「yank」(ペースト)を行います。これはから来ているのEmacsエディタ

CtrlCUnixのほぼすべての場所に、現在のプログラムまたは操作をキャンセルするために使用される「割り込み」キーがありました。CtrlVしばしば「そのまま挿入」を意味し、キー-つまり、関連するすべてのアクションを実行せずに、文字通り、次の文字を挿入します。たとえば、通常Escviエディターでコマンドモードに切り替わりますがCtrlV、ドキュメントに文字Escが挿入ESCされます。

セッション全体のクリップボードからのCtrlCコピーおよびCtrlV貼り付けの使用は、1983年にMac OSによって、1990年にMicrosoft Windows 3.xによって導入されました。(以前のWindowsバージョン(1.xおよび2.x)、およびIBM OS / 2 、コピーおよび貼り付けのためにIBM CUAキーのみをサポートしました;これらのショートカットは、すべてのWindowsバージョンで引き続きサポートされています。)CtrlInsShiftIns

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

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

(ほとんどのX11ツールキットは、端末プログラムと競合しないCUAの「コピー」および「貼り付け」キーもサポートします。残念ながら、実装はかなり矛盾しています。CtrlInsほとんどのプログラム(GTK、Qt4、 Xaw);ただし、ShiftInsほとんどのGTKおよびQt4プログラムでは「プライマリ選択」から、Firefoxでは「クリップボード」から、現在廃止されたXawでは現在廃止されたカットバッファーから貼り付けます。)


ただし、一部の端末またはコンソール(特にWindows 10コンソール)これらのキーをサポートしています。Windowsコンソールには常に個別の「マーク/選択」モードがあったため、CtrlCコンテキストに基づいた2つの意味があります。通常モードでは割り込みを送信し、選択モードではクリップボードにコピーします(Enter以前と同様)。

一方、Windowsのコマンドラインツールは実際には何にも使用さ CtrlVれなかったため、何も邪魔することなく「貼り付け」が行われていました。ただし、Unixのような端末で同じことを行うと、さらに問題が生じます。


10
うーん。Vimでは、「ヤンク」は貼り付けではなくコピーを意味します。これも理にかなっているようです。ここでこの用語の意味について確かですか?
コンラッドルドルフ

11
はい、確かです。Bashは、同等のEmacsからデフォルトのショートカットを継承します。
悲しみ

4
@grawity:あなたの最後のコメントはちょっとした見当違いです。Bashは、vimモードとemacsモードの2つのコマンドライン編集モードを提供します。ほとんどのインストールでemacs-modeがデフォルトになっているだけです。これは、bashであっても、用語yankの使用に曖昧性をもたらします。
ラーム

1
ああ!私は知っていた彼らが切り替わったときにVimperatorの開発者がミスを犯し<C-v>i、バージョン3で、私は非常に私の指を置くことができなかった理由
イズカタ

2
@Colin:クリップボードとXの選択の区別を見逃していました。いくつかの選択肢(PRIMARY、SECONDARY、CLIPBOARD)がありますが、通常はそのうちの1つだけが「クリップボード」と呼ばれます。CLIPBOARDの選択です。主な選択項目はクリップボードではありません。
荒廃

47

CtrlShiftV貼り付けに使用します。

Ctrl 他の文字との組み合わせは、通常、特別な機能のためにシェルによって使用されます。


4
そのため、Linuxが特別な機能の代わりにCTRL + SHIFTを登録しないのはなぜですか。一部のユーザーは、特殊機能よりもコピーアンドペーストの方が一般的だと思いますか?
ヤセルザマニ

22
シェルは、カットアンドペースト機能を備えたグラフィカルターミナルとGUIが登場する前から存在していたため、引数は実際には有効ではありません。@YasserZamani
slhck

9
Ctrl + Shift + Vは、ターミナルエミュレーター(GNOMEターミナルを使用している場合)によって実行され、bashそれ自体ではありません。GUI環境の外にいる場合、または別の用語エミュレータを使用している場合、これはおそらく機能しません。このコマンドは移植性があるとは思わないでください。
ラーム

@rahmuああ、それについて知らなかった。Ubuntuのストックインストールのみを使用してください。普遍的なコマンドはありますか?
-Akash

2
おそらく、クリップボードにアクセスするためのものはありません(プライマリ選択ではShift + Insのみ)。クリップボード自体もX11のものであり、ttyからはアクセスできません。ただし、Ctrl + Shift + VはGNOMEターミナル、Xfce4ターミナル、KDE ​​Konsoleでサポートされています。これは、最も一般的なGUI環境を対象としています。
悲しみ

20

一般的な端末での汎用コピーペースト設定は次のとおりです。

gnome-terminal(Linuxで最も一般的)
コピーCtrlShiftC
貼り付けCtrlShiftV
:コピーしmiddle-clickて貼り付けを選択することもできますが、代替クリップボードを使用します。

パテ(Windowsの中で最も人気のある端末)
をコピー:(マウスで選択し、何のキーボード操作)
貼り付けRight-click (またはより確実に:shiftRight-click
:マウス入力を(のような取るアプリvimlinks)を盗むことができますRight-click- shiftRight-click常に任意のアプリで動作しません。

OSXターミナル
コピーAppleC
貼り付けAppleV
注:マウス制御(vimおよびなどlinks)を使用するアプリは、テキストを選択する意味をオーバーライドする場合があります。この場合、コピーは期待どおりに機能しません。その場合、Controlマウスをドラッグして選択します。端末設定では、マウスのアプリとの対話はデフォルトで無効になっているため、ほとんどの人はこれについても知りません。


ありませんcmd.exeWindows上のPuTTYよりも人気?:
ベン、

@Ben SSHターミナルとしてではありません。
タイラー

1
いいえ、cmd.exeSSHターミナルではありません。それは非常に真実です。
ベン

3
@Ben:端末ではなく、シェルのみです。Windowsのデフォルトのターミナルは、csrssの「Windowsコンソール」コンポーネントです。
悲しみ

@Benですがcmd.exeクイック編集モードで右クリックして貼り付けることもできます(メニュー>編集>貼り付けを開かない場合は唯一の方法です)。pre-win10コマンドプロンプトにショートカットがありません
-phuclv

17

Ctrlキーと文字を組み合わせて、大文字のASCII値から64を減算することで見つかるASCII制御文字を生成することは、根強い伝統です。この計算はCtrl- Aに1などをマップします。たとえばCtrl- IであるTabCtrl- J改行されます。

Ctrl-に類似した伝統はありませんShiftCtrl- Shift- V任意の特定の文字を生成することが期待されていません。

ターミナルエミュレータは、Ctrl慣例を透過的に通過させ、そのターミナルウィンドウを介して操作されるプログラムへの文字入力として表示されるようにすることで、伝統をサポートする必要があります。端末ベースのプログラムは、制御キーをコマンドにマップします。たとえば、BashはCtrl- Vをコマンドとして使用します。これは、「次の文字をそのまま取得する」という意味です。これにより、コマンドラインに制御文字を埋め込むことができます。端末が自身の使用のために制御キーを盗む場合、そのようなコマンドは使用できなくなります。インターセプトCtrl- Vメタ機能の場合は問題外です(少なくともデフォルトの構成では)。

しかし、端末エミュレータを傍受するのは自由ですCtrl- Shift- V文字を生成することが期待されていません。Ctrl- Shift- V標準ではありません。これはGnomeターミナルのものです(他のターミナルにある可能性があります)。

XベースのUNIXデスクトップでは、コピーするためのコマンドは不要です。テキストを選択するだけです。そして、中央のボタンはそのテキストを他の場所に貼り付けます。Xterm、Gnome Terminal、Firefoxで同様に機能することがわかります。

Ctrl- Vの模倣であるMicrosoft Windowsの規則、であるApple- Vマッキントッシュからは。


3
これは正確な減算ではありません。従来、Ctrlは文字の6ビット目と7ビット目をクリアしていました。このため、ほとんどの端末ではCtrl + Shift +文字がCtrl + Letterと同じように機能します(コピー/貼り付けのショートカットのように、端末によって明示的にオーバーライドされない限り)。
悲しみ

1
キーは基本的にASCII標準に対してランダムに並べられているため、プログラムROMにはASCIIコードの生成を支援するいくつかのルックアップテーブルが含まれています。...別のキーが押されたときにCONTROLキーを押すと、別のテーブルが検索されます。[VT100シリーズテクニカルマニュアル、4.4.9.3、デジタル]。
カズ

1
@Linger編集に感謝します。うまくレンダリングされ<kbd>ますが、今後の投稿でこれらのタグをすべて入力する方法はありません。
カズ

Ctrl-Aです1。どうすればこれを試すことができますか?を押してもGnome端末は何もしませんCtrl-A
ロバート

3

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

目的のコードを選択し、クリックして貼り付けます mouse-middle-key


1
マウスの中ボタンがある限り。
-jpierson

1
@jpiersonはこれを強く推奨しているわけではありませんがxdotool click 2、3番目のボタンのクリックをエミュレートするためだけに使用する小さなスクリプトを作成できます。次に、どのウィンドウマネージャー/デスクトップ環境でも、このスクリプトをキーにバインドできます-たとえばmod i(挿入用)または使用可能なキーバインド(またはmodの意味-これをバインドする場所によって異なります)
dylnmc

2

キーボードの挿入ボタンを使用してコピーと貼り付けを実行できます(古いキーボードでは見つからない場合があります)

コピーCtrlInsert
貼り付けCtrlShiftInsert


1

怠けている場合は、マウスの中央ボタンを使用して、テキストドキュメント、スクリプト、Web、またはフォーラムからコマンドを選択することもできます。目的のコマンドを選択したら、ターミナルに移動して、マウスの中央のボタンをクリックするだけです。右クリックして貼り付けるという通常の動作をサポートしていないように見える子犬Linuxを使用しているため、この方法を使用します。ターミナルウィンドウではなく、ファイルハンドラウィンドウで行います。理由はわかりませんが、中ボタンの方法を見つけたのでとても便利です。;-)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.