dot*_*hen 94 terminal encoding special-characters
为什么^M在 VIM 和其他上下文中用于表示回车?
我的猜测是这M是拉丁字母表的第 13 个字母,回车是\x0D或小数13。这是原因吗?此表示是否记录在任何地方?
我注意到 Tab 由 表示^I,它是拉丁字母表的第九个字母。相反, Tab is \x09or decimal 9,这支持我上面提到的理论。但是,这可以在哪里记录为事实?
Art*_*ner 118
我相信 OP 实际问的是什么叫做Caret Notation。
插入符号是 ASCII 编码中不可打印控制字符的符号。符号由插入符号 (^) 后跟一个大写字母组成;这个有向图代表 ASCII 码,其数值等于字母的数值。例如,值为 4 的 EOT 字符表示为 ^D,因为 D 是字母表中的第 4 个字母。值为 0 的 NUL 字符表示为 ^@(@ 是 A 之前的 ASCII 字符)。值为 127 的 DEL 字符通常表示为 ^?,因为 ASCII '?' 在 '@' 之前,如果屏蔽为 7 位,则 -1 与 127 相同。翻译的另一种表述是通过反转 ASCII 代码的第 7 位找到打印的字符
可以在此处找到 ASCII 控制字符的完整列表以及插入符号
关于 vim 和其他文本编辑器:如果在需要 Linux 行尾 (LF) 的编辑器中打开 Windows 格式 (CRLF) 文本文件,通常只会看到 ^M。0x0A 被渲染为换行符,0x0D 就在它被打印为 ^M 之前。大多数时候,编辑器的默认设置包括“自动识别行尾”。
Flu*_*lup 22
这正是原因。
ASCII 将字符 0-31 定义为非打印控制代码。以下是ascii(7)来自随机 Linux 系统 ( man ascii)的手册页的摘录,直到并包括 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)
Run Code Online (Sandbox Code Playgroud)
按照惯例,这些字符是用Control与所需字符相关的字母生成的。G由于这个原因,电传打字机和早期的终端键盘在键上方写有“BELL” 。
定义 ASCII 的标准文档是ASA X3.4-1963,是美国标准协会在 1963 年发布的。我在他们的网站上找不到原始文档,但是这个原始文档的摘录显示了字符表,包括上面的控制代码。
Dan*_*cks 14
该符号可以追溯到最早的 ASCII 电传打字机(约 1963 年)。有一个 CTRL 键可以切换 0x40 位,因此 CTRL-M(回车)将是 0D 而不是 4D,CTRL-G(响铃)将是 07 而不是 47,CTRL-L(换页)将是 0C 4C。
将特定的字母分配给特定的功能并没有“设计”,这只是偶然的,当分配 ASCII 代码尘埃落定时,M 键与回车有一点不同,因此回车变成了 CTRL-M。
这是我能找到的 ASR33 键盘的最佳照片。如您所见,控制字符名称以小写字母打印在相应的字母键上。
图片由 Marcin Wichary 提供,用户:AlanM1(源自(裁剪)自File:ASR-33 2.jpg)[ CC BY 2.0 ],来自 Wikimedia Commons
M 键上没有符号,因为有一个专用的“RETURN”键,所以 CTRL-M 是多余的。
| 归档时间: |
|
| 查看次数: |
13618 次 |
| 最近记录: |