L'origine dell'asimmetria risale alla storia dell'informatica.
Versione breve:
<CR> & <LF> (Carriage-Return and Linefeed)
==
\r & \n
Versione lunga:
le prime schermate erano essenzialmente versioni digitali dei teletipi (TTY) e utilizzavano i codici di controllo per generare un comportamento simile alle stampanti. Carriage-return ha portato il cursore (o la testina di stampa) sulla colonna iniziale. L'avanzamento della riga è avanzato alla riga successiva (su uno schermo) e ha fatto avanzare la carta di una riga.
Per le stampanti, è stato necessario eseguire un accoppiamento <CR><LF>
o l'output non sarebbe stato corretto. Sulle prime schermate, il problema era ancora vero.
DOS (e una specie di Windows dopo) ha seguito il vecchio standard e salva il testo con <CRLF>
.
* Il testo NIX (come è noto alla maggior parte degli utenti vi) viene utilizzato solo a <LF>
fini di efficienza.
Per eseguire il test in Windows, utilizzare Word / Wordpad e salvare alcune righe di testo "come tipo: testo - formato MS-DOS". Quindi apri lo stesso file in Blocco note. Dovrebbe apparire normale. Quindi salvare lo stesso file in Word / Wordpad "come tipo: Testo". Blocco note ignorerà tutte le nuove righe ed eseguirà le linee insieme. [Il formato di testo del Blocco note è impostato automaticamente sulla \r\n
combinazione mentre Word / Wordpad sono impostati di default \n
.]
è l'equivalente del codice di <CR>
\ n è l'equivalente in codice di <LF>
E nella mia (molto limitata) esperienza con vi, proverebbe a "correggere" la <CRLF>
combinazione dal mio editor di testo DOS. vi ha finito per rimuovere un carattere, sostituendolo con <NUL>
. Gran parte del motivo per cui ho smesso di usare vi.
\r
è<CR>
e lo\n
è<LF>
. Non affronta la vera domanda del perché\n\r
comportarsi diversamente in contesti diversi.