![Enter 键与回车键 (CR) 不同](https://linux22.com/image/106802/Enter%20%E9%94%AE%E4%B8%8E%E5%9B%9E%E8%BD%A6%E9%94%AE%20(CR)%20%E4%B8%8D%E5%90%8C.png)
很多网页说回车键的ASCII码是13(0d)。
Enter 键被视为回车符 (CR)。
现在我们来做一个实验。
要打开vim,只需按三下回车键,无需执行任何操作,然后将文件另存为test.csv。
xxd test.csv
0000000: 0a0a 0a
我的结论得到了。
Enter 键的 ascii 值是 0a ,意思是换行符,它与回车符(ascii 中的 13 或 0d)不同。
对还是不对?
答案1
当您按 时,您的终端会发送回车符Enter,并且在类 Unix 系统上,终端司机将其转换为换行符(“换行符”)。
这就是icrnl
所显示的功能stty -a
,例如,
$ stty -a
speed 38400 baud; rows 40; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
程序(甚至 shell 脚本)可以将其关闭以读取实际的回车符,以将其与ControlJ换行符区分开来。
答案2
该Enter键确实发送一个 CR 字符(回车、Ctrl+M、数值 13 = 0x0d = 015)。您可以在 shell 提示符下或在 Vi 插入模式下按Ctrl+V然后看到Enter:Ctrl+V是一个键盘快捷键,用于在内核的内置终端驱动程序以及许多基于终端的程序(包括典型的 shell 和维(米)。
在 Vi(m) 插入模式下,字符 Ctrl+M 与命令“插入换行符”绑定。 Vi 通过插入字符来对大多数输入字符做出反应,但也有一些例外,最明显的是字符 Ctrl+[,这是按键Esc发送的内容。
在文本文件中,换行符由 LF 字符表示(换行,Ctrl+J,数值 10 = 0x0a = 013)。
在 Vi 中按Ctrl+J实际上会产生相同的效果,但如果需要,您可以将两个击键绑定到单独的命令。您可以在命令模式下观察到Ctrl+J和Ctrl+之间的区别: +只是将光标向下移动到下一行,而+将光标向下移动到下一行,并将其移动到第一个非空白字符。MCtrlJCtrlM