なぜ^M
はVIMや他のコンテキストでキャリッジリターンを表すのに使われるのですか?
私の推測では、M
はラテンアルファベットの13文字目で、キャリッジリターンは\x0D
か10進数の13
です。これが理由でしょうか?この表現はどこかに文書化されていますか?
Tabはラテンアルファベットの9番目の文字である^I
で表されていることに気がつきました。逆に、Tabは\x09
か10進数の9
であり、これは上述した私の理論を支持するものです。しかし、これはどこで事実として文書化されているのでしょうか?
94 dotancohen 2014-06-05
OPが実際に尋ねていたのは、Caret Notationと呼ばれるものだと思います
カレット表記法とは、ASCIIエンコーディングにおける印刷不可能な制御文字のための表記法である。この表記法は、キャレット(^)の後に大文字が続くもので、このディグラフは、その文字の数値に相当する数値を持つASCIIコードを表しています。例えば、値が4のEOT文字は、Dがアルファベットの4番目の文字であるため、^Dと表現されます。また、値が0のNUL文字は^@(@はAの前のASCII文字)と表現されます。値127のDEL文字は通常^?として表現されますが、これはASCIIの「?翻訳の代替的な定式化は、印刷された文字がASCIIコードの7ビット目を反転することによって発見されるというものです
ASCII 制御文字とキャレット表記の完全なリストは、こちらにあります
vim や他のテキストエディタについて。通常 ^M が表示されるのは、Linux の行末 (LF) を想定したエディタで Windows フォーマット (CRLF) のテキストファイルを開いた場合のみです。0x0A は改行として表示され、その直前の 0x0D は ^M として印刷されます。ほとんどの場合、エディタのデフォルト設定には「行末を自動的に認識する」が含まれています
117 Art Gertner 2014-06-05
まさにその通りの理由です
ASCIIは、文字0〜31を非印刷制御コードとして定義しています。ここでは、ランダムな Linux システム (ascii(7)
) のマニュアルページから、CR (13) までの、そして CR (13) を含むものを抜粋しています
Oct Dec Hex Char
─────────────────────────────────────────────
000 0 00 NUL '\0'
001 1 01 SOH (start of heading)
002 2 02 STX (start of text)
003 3 03 ETX (end of text)
004 4 04 EOT (end of transmission)
005 5 05 ENQ (enquiry)
006 6 06 ACK (acknowledge)
007 7 07 BEL '\a' (bell)
010 8 08 BS '\b' (backspace)
011 9 09 HT '\t' (horizontal tab)
012 10 0A LF '\n' (new line)
013 11 0B VT '\v' (vertical tab)
014 12 0C FF '\f' (form feed)
015 13 0D CR '\r' (carriage ret)
従来、これらの文字はControlと必要な文字に関連する文字で生成されていました。テレタイプや初期のターミナルキーボードでは、このような理由からGキーの上に’BELL’と書かれていました
ASCII を定義した標準文書は ASA X3.4-1963 で、1963 年に米国規格協会が発行したものです。彼らのウェブサイトでは原文を見つけることができませんが、この原文からの抜粋には、上記の制御コードを含む文字表が掲載されています
22 Flup 2014-06-05
この表記法は、初期の ASCII テレタイプ (1963年頃) にさかのぼります。0x40ビットを切り替えるCTRLキーがあり、CTRL-M(キャリッジリターン)が4Dではなく0D、CTRL-G(ベル)が47ではなく07、CTRL-L(フォームフィード)が4Cではなく0Cになるようになっていました
特定の機能に特定の文字を割り当てることに「デザイン」はありませんでした。ASCIIコードの割り当てで埃が落ち着いたときに、Mキーがキャリッジリターンと1ビット違っていたため、キャリッジリターンがCTRL-Mになったのです
これがASR33キーボードのベストショットです。ご覧のように、制御文字の名前が対応するアルファキーに小さな文字で印刷されています
画像 Marcin Wichary, User:AlanM1 (File:ASR-33 2.jpg からの派生(トリミング)です。)CC BY 2.0]via Wikimedia Commons
Mキーには専用の「RETURN」キーがあるので、Mキーには表記がないので、CTRL-Mは冗長です
14 Daniel R Hicks 2014-06-06
キャレット(^)は、ちょうどコントロールキーを保持するための書き込みのための略記です – CTRLダウン
古き良き時代には、これらのコードを入力することができます(上記参照)直接では、Ctrlキー+ G(^G)は、ターミナルが行く “チン “を作るだろう
VimでCRを追加するには、Ctrlキー+Mなどのタブ=Ctrl+Iを使います
3 Don 2014-06-06
定義上の非印刷可能な文字であるものを表示するための何らかの視覚的な方法の必要性
そこで、1970年代初頭(あるいはそれ以前かもしれませんが)の誰かが(CP/Mで見た記憶がありますが、他の誰かが既にTOPSに言及しています)、値1から26までの26個の印刷不可能なASCII制御文字のシンボルを「キャレットプラスレター」と決めました。値0は^@として印刷され、値127は^?
2 RonJohn 2014-06-09
どこに文書化されているかというと、このページではすべての制御文字と、それを制御キーで入力/表現する方法がリストアップされています(最初の文字、アスキー文字0には制御キーの表現がありませんが)。また、一番下にはソースがあります
33の制御文字があることを考えると、不思議に思うかもしれません(ASCII文字0-31なので32文字、+文字127、=33文字)。まあ、アスキー文字1にはCtrl-A、アスキー文字26にはCtrl-Zを使い、Ctrl-Zになったら[
\
]
^
_
を使います
Ctrl-ZはSUBとしてリストアップされていますが、DOSやcmdプロンプトではEOFで、技術者としてはcopy con a.a
でa.a
がファイルになっているときに使います。テキストを入力してCtrl-Zで終了しますが、不思議なことにEOFマーカーは入力されません。しかし、CMDにファイルの終了を伝えて、CMDがそれを書き込むようにしています
そのcs.tut.fiのウェブページは、http://www.wps.com/texts/codes/X3.4-1963/index.htmlのソースとしてこれを提供しています
しかし、リンク切れですが、archive.orgではJPGの形で利用できます
情報交換のための米国規格コード ASA規格X3.4-1963
1 barlop 2014-06-05
このテーブルで、プリタブルではないASCII文字Controlのマッピングをすべて見ることができます
0 Ofir Luzon 2014-06-05