Idle Works, Idle Thoughts

回车和换行

回车:CR (Carriage Return)

换行:LF (Line Feeds)

这两个词来自打字机。

在打字机上,有一个部件叫Carriage,它是打字头。每输入一个字符,Carriage就前进一格。当输满一格后,要切换到下一行,就要让Carriage在两个方向上运动:水平和垂直。水平方向上,要将Carriage移动到一行的起始处(左边界),垂直方向上,要将纸张向上移一行,相当于让Carriage向下移动一行。Line Feed中的Feed表示进纸的意思,就是打字机把纸往里面送。

这两个动作,就被拆分为了:

Teletype

在逻辑上,我们把换行叫做End-of-Line,简写为EOL。 具体到各平台上,EOL的方式是不同的。

Unix Mac Windows
\n \r \r\n

如果把一个Windows文件传到Linux上,用Vim打开,会注意到它与Linux下创建的文件没有任何不同。但细心点的话会发现左下角的文件信息一行会有[dos]字样。

输入:

:e ++ff=unix

就会发现每一行的结尾都有一个^M字符,它就表示\r。

Linux下的文件传到Windows,用记事本打开,会发现所有的行都被挤到了一行。用Vim打开,则会显示其格式为[unix],并自动处理了换行。

(2015年8月26日)

参考

知无涯之回车换行的故事