El origen de la asimetría se remonta a la historia de la computación.
Version corta:
<CR> & <LF> (Carriage-Return and Linefeed)
==
\r & \n
Versión larga: las
primeras pantallas eran básicamente versiones digitales de teletipos (TTY) y usaban códigos de control para generar un comportamiento similar al de las impresoras. El retorno de carro llevó el cursor (o el cabezal de impresión) a la columna de inicio. El avance de línea avanzó a la siguiente fila (en una pantalla) y alimentó el papel una línea hacia adelante.
Para las impresoras, tenía que hacer un emparejamiento <CR><LF>
o su salida no se vería bien. En las primeras pantallas, el problema seguía siendo cierto.
DOS (y sorta-Windows después) siguieron el estándar anterior y guardan texto con <CRLF>
.
* El texto NIX (como la mayoría de los usuarios de vi están familiarizados) solo se usa <LF>
para la eficiencia.
Para probar en Windows, use Word / Wordpad y guarde algunas líneas de texto "como tipo: Texto - formato MS-DOS". Luego abra el mismo archivo en el Bloc de notas. Debería verse normal. Luego guarde el mismo archivo en Word / Wordpad "como tipo: Texto". El Bloc de notas ignorará todas las líneas nuevas y las ejecutará juntas. [El formato de texto del Bloc de notas está predeterminado en la \r\n
combinación, mientras que Word / Wordpad está predeterminado en \n
.]
\ r es el código equivalente de <CR>
\ n es el código equivalente de <LF>
Y en mi (muy limitada) experiencia con vi, intentaría "arreglar" la <CRLF>
combinación de mi editor de texto DOS. vi terminó eliminando un personaje, reemplazándolo con <NUL>
. Una gran parte de la razón por la que dejé de usar vi.
\r
es<CR>
y\n
es<LF>
. No aborda la pregunta real de por qué\n\r
comportarse de manera diferente en diferentes contextos.