前言
在日常文本编辑时会经常遇到“回车”和“换行”,而在写代码时涉及到文本输入输出时也会经常遇到。由于一些历史原因,不同的操作系统对回车和换行也有不同的“理解”。本篇文章旨在说清楚回车和换行的前生今世,结合一些实例来加深对这两个“隐藏”字符的理解。
一、回车和换行的由来
在计算机出现之前(第一台通用计算机ENIAC于1946年发明),有一种设备叫电传打印机(TeleTypewriter,Linux系统的tty也是源于此)。电传打印机是一种用于长距离实时传播股票价格,打字员用灵巧的双手在电传打印机上一顿操作猛如虎,输入的信息就以编码的形式通过电缆传输到远端,远端的电传打印机收到这些信息后,会打印到纸片上,从而完成一次信息的传递。早期的计算机实在太弱鸡,并且采用反人类的输入方式(穿孔读卡器),所以计算机发明之后,自然而然就想到了把电传打印机连接到电脑上作为输入输出设备。
上一张经典电传打印机(Teletype Model 33 ASR (1963))的图片,不得不说六十年前的老古董在感官设计上,今天看来依然很有美感。
言归正传,这种打印机每秒可以打印10个字符,但有一个问题是,不可能把所有的信息都打印到纸上的第一行,这就涉及到换行问题。换行转换成实际的操作其实分为两步,一步是把喷墨头挪到纸张的开始,比如说纸张左边界;另一步还要纸张向下移动一行;而这两步大概占用0.2秒的时间,如果在这段时间内有字符传输进来就会导致两个字符的丢失。
聪明的人们想到一个办法去解决这个问题,就是在每行结尾增加两个表示结尾的字符。一个叫做“回车”,告诉打字机把打印