Enter 键与回车键 (CR) 不同

Enter 键与回车键 (CR) 不同

很多网页说回车键的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然后看到EnterCtrl+V是一个键盘快捷键,用于在内核的内置终端驱动程序以及许多基于终端的程序(包括典型的 shell 和维(米)。

在 Vi(m) 插入模式下,字符 Ctrl+M 与命令“插入换行符”绑定。 Vi 通过插入字符来对大多数输入字符做出反应,但也有一些例外,最明显的是字符 Ctrl+[,这是按键Esc发送的内容。

在文本文件中,换行符由 LF 字符表示(换行,Ctrl+J,数值 10 = 0x0a = 013)。

在 Vi 中按Ctrl+J实际上会产生相同的效果,但如果需要,您可以将两个击键绑定到单独的命令。您可以在命令模式下观察到Ctrl+JCtrl+之间的区别: +只是将光标向下移动到下一行,而+将光标向下移动到下一行,并将其移动到第一个非空白字符。MCtrlJCtrlM

相关内容