tl;dr 回车键本意是回到该行行首,在现代计算机日常使用中,这两者的概念已趋于相同。
想象一下我们现在的打字方式:在 word 这类文档编辑器中,有一张虚拟的白纸,光标初始在纸张的左上角。我们一边打字,光标一边向右移动直到这一行写满换行,或是提前按下回车换行。这种方式和我们在纸上用笔写字差不多。然而,早年打打字机却正相反,光标是固定的,纸张反而是移动的。
早年的英文打字机「Typewriter」,在键盘前方有一个滚筒,用来固定纸张。纸通过卷在卷筒上用机械结构固定住。这个滚筒被称为字车「Carriage」。每当打字员按下一个键,就会在固定的位置,通常在中间,印上那个键相应的字符,同时将字车左移一个单位的距离。这样当打到一行结尾的时候字车此时处在最左侧的位置,需要打字员将其推回开始的位置,这个步骤就被称为「回车」。在回车结束后「换行」是另一个操作,指新起一行。理论上光标在任意位置时都可能换行从新行的任意位置开始输入,所以回车「Carriage Return」与换行「Line Feed」其实是两个操作。
中文打字机「Chinese Typewriter」,与英文按键打字不同的是这个步骤变成了「寻字」。在字板上找到想要的字再按下一个相当于确认的键,该字就会被打印在纸上。
回车「return」与确认「enter」
在键盘上,回车键上一般会同时印有 return 和 enter ,这两个词的本意是不同的,return 指回车,enter 其实指的是把当前的内容发送出去。在 Windows Cmd 中,或是 Linux Terminal 里,输入命令 cd 按下回车,此时做的操作其实是将命令发送出去,也就是 enter 的操作。另一个例子是 qq 的聊天窗口中有一个设置是调整回车键在输入时的动作。默认情况下在输入框中按回车,做的是 return 的操作即换行,按 ctrl+回车 才会将消息发送出去,该动作就是 enter。
带有数字键盘的大键盘上,小键盘的右下角有一个 enter 键。这个键和中间的那个回车键意义是不一样的。虽然在大多数应用中,这两个键的动作没什么区别,这是因为应用把这两个命令当成一个了。在 macOS 的 PS 软件里,当处在文本编辑中时,按下回车会换行,而小键盘那个 enter 键会确认输入并跳出编辑。
windows linux macOS 对换行的处理
早期的 ASCII 标准中,出现了两套标准,一套认为 CRLF 或者 CF 都可以,即新行=回车+换行或者新行=换行,另一套认为只有 CRLF 才是正确的,即新行=回车+换行。windows 采取了两边都兼容的 CRLF 方案,而 unix 采用了 LF。linux 与 macOS 都奔向了 unix ,导致 windows 反而被认为是异端。然而,真正的异端其实是 Mac OS X 以前的 Mac OS,它采用的是 CR 方案,即新行=回车。
硬回车与软回车
经常使用 word 的用户一定知道这两个的区别。硬回车是我们通常情况下按回车键产生的字符,一个横折向下的箭头,用来表示段落间的分隔。软回车是 shift+回车 产生的字符,一个向下的箭头,用来在不结束段落的同时换行。软回车换的行因为没有新开段落,不受段间距控制,在一些场景比较实用,比如写诗的时候,一句一行,但并不是一句一段。