Ctrl +文字のキーボードショートカットを使用すると、^ C、^ Vなどが端末に表示されるのはなぜですか?


26

コマンドの出力からテキストをコピー、貼り付け時に時々 、私が誤って使用しますCtrl+ cの代わりにCtrl+ Shift+ c

したがって、コマンドラインはそれを次のように解釈し^Cます...

どうしてこれなの?コマンドラインがcontrol入力を次のように解釈するのはなぜ^ですか?

回答:


35

実際には、文字シーケンス「^ C」は挿入されません。これは、次のような印刷できないASCII制御文字の単なる表現です。

  • ^C →ETX(テキストの終わり、キル信号を送信)、ASCII 0x03
  • ^D →EOT(送信の終了、入力の終了)、ASCII 0x04
  • ^H→BS(バックスペース、\b)、ASCII 0x08
  • ^J→LF(改行、\n)、ASCII 0x0A
  • ^L →FF(フォームフィード、新しいページ、端末をクリア)、ASCII 0x0C
  • ^M→CR(キャリッジリターン、\r)、ASCII 0x0D

これは、キーボードを使用して挿入できるASCII制御文字のほんの一部です。ここで完全なリストを見つけることができます。

覚えておくべき最も重要なものは、Ctrl+ CCtrl+ DCtrl+ Lです。


^「コントロール」の記号としてのキャレットの使用は、端末がテキストのみであったグラフィック以前の時代にさかのぼります。それ以前にも、カードと紙があり、端末はありませんでした。キャレットがシンボルとして選択された理由を知りたいです。
水田ランダウ

8

のでCTRL+ KEYコンボは非印字可能なASCII文字としての端末によって解釈され、されているものは非印字あなたはそれらを表現する方法が必要です。

起因大会、ANSIをサポートしてVT端末は、表現することであるCTRL+をKEY表すコンボCTRLキャレット(とが^)とKEYしてKEY


5

端末との間でコピーおよび貼り付けを行う場合は、それぞれショートカットCtrl+ InsertおよびShift+ を使用することをお勧めしInsertます。

Xグラフィカル環境ではCtrl+ InsertShift+ Insertは同じCtrl+ CCtrl+に結び付けられていることに注意してくださいV

ほとんどの端末では、Ctrl+ C(で表される^C)はプロセスの実行を停止するために使用されるため、そのショートカットでの貼り付けは機能しません。

コピーと貼り付けをすばやく行うには、コピーするテキストを強調表示し、貼り付けたい場所を中央クリックして、Xのプライマリバッファーを利用できます。キーボードは必要ありません。


2
申し訳ありませんが、質問を誤解しました。OPは、^CCTRL + C(またはCTRL +別の文字)を押したときに文字列または類似のものが表示される理由を知りたいと考えました。それは、端末で何かを正しくコピーして貼り付ける方法ではなく、あなたの答えが素晴らしいでしょう。
バイトコマンダー

@ByteCommander、そうですね!申し訳ありませんが、質問はすでに適切に回答されているようですので、答えはそのままにします。
キーファーローク

-2

あなたは必要があります使用することCtrl+をCしていないShift+ Ctrl+ Cコマンドラインで、彼らは同じことを行うため(と、Ctrl+ Cよりも簡単ですShift+ Ctrl+ C)。GUIがいくつかのキーストロークをキャプチャして特別なことを行う特定のグラフィカル環境ではそうではないかもしれませんが、キーストロークが本当にコマンドラインに送信される場合、違いはありません。このため、Ctrl+を押すとC^ Cが小文字のCではなく大文字のCとして表示される場合があります。コマンドラインでは、押した文字が区別されません(大文字の方が読みやすいと判断されます)。これは手紙にも当てはまります。他のキャラクターについてShiftは、効果があるかもしれません。)

押すCtrl- C(レスASCIIテーブルの小文字の位置より96)ASCII 64 ASCIIテーブルの大文字の位置の下にあるコードを送信します。Ctrl- c(小文字)を押すと、ASCIIコード3(大文字CのASCIIコード67 より64少ない)が送信されます。多くの環境では、テンキーをAlt押し3たままにして(その後、3キーを放してから、Altキーを放して)同じ効果を得ることができます。

^ Cに関して、^は " Ctrl"キーのよく知られた略記です。同様に、M-は「Alt」キーの省略形です。ええ、ええ。Mは言葉保持することによって入力することができる「メタ」、の略でAlt押すことで、時には次に来るものは何でも、プレス、またはEsc(離型Esc)、その後、次に来るものは何でも押します。 「コントロールキー」に関するウィキペディアの記事:「表記」セクションでは、これを「従来の表記」と説明しています。これはキャレット表記とも呼ばれます(キャレット表記に関するウィキペディアの記事Unix StackExchange:キャレット表記に関するryvnfの質問)。

最後の質問に関しては、コマンドシェルはキャレットとなるものを「解釈」していません。言い換えれば、シェルは何も読んでおらず、それがキャレットであると信じています。何が起こっているのかは、シェルが出力によく知られているキャレット表記を使用していることです。別の例として、次のコマンドを実行して、よく知られているページャー「less」を表示し、キャレット表記を使用できます。dd if=/dev/zero bs=64 count=1 | less

(「nano」テキストエディタは、オンラインヘルプでキャレット表記も使用します。^ Gを押した後に表示されるオンラインヘルプの全画面(別名Ctrl-を含むg)。


4
DevRobotは、GUI端末を意味するコピーアンドペーストのコンテキストでCtrl-C(またはShift-Ctrl-C)を使用することを具体的に求めています。必ずしも間違っているわけではありませんが、GUIユーザーの観点から来た人にとって、説明は間違いなく混乱しています。
RM
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.