Der Ursprung der Asymmetrie reicht bis in die Computergeschichte zurück.
Kurzfassung:
<CR> & <LF> (Carriage-Return and Linefeed)
==
\r & \n
Lange Version:
Die ersten Bildschirme waren im Grunde digitale Versionen von Teletypen (TTY) und verwendeten Steuercodes, um ein ähnliches Verhalten wie Drucker zu erzeugen. Wagenrücklauf brachte den Cursor (oder Druckkopf) in die Startspalte. Der Zeilenvorschub rückte in die nächste Zeile (auf einem Bildschirm) vor und schob das Papier eine Zeile vor.
Bei Druckern mussten Sie eine Kopplung durchführen, da <CR><LF>
sonst die Ausgabe nicht richtig aussah. Auf den ersten Bildschirmen galt das Problem immer noch.
DOS (und danach sorta-Windows) folgte dem alten Standard und speichert Text mit <CRLF>
.
* NIX-Text (wie die meisten vi-Benutzer kennen) wird nur <LF>
aus Effizienzgründen verwendet.
Verwenden Sie zum Testen in Windows Word / Wordpad und speichern Sie einige Textzeilen "als Typ: Text - MS-DOS-Format". Öffnen Sie dann dieselbe Datei in Editor. Es sollte normal aussehen. Speichern Sie dann dieselbe Datei in Word / Wordpad "als Typ: Text". Notepad ignoriert alle Zeilenumbrüche und führt die Zeilen zusammen aus. [Das Textformat von Notepad ist standardmäßig auf die \r\n
Kombination eingestellt, während Word / Wordpad standardmäßig auf \n
.]
\ r ist das Code-Äquivalent von <CR>
\ n entspricht dem Code von <LF>
Und in meiner (sehr begrenzten) Erfahrung mit vi würde es versuchen, die <CRLF>
Kombination aus meinem DOS-Texteditor zu "reparieren" . vi entfernte schließlich ein Zeichen und ersetzte es durch <NUL>
. Ein großer Teil des Grundes, warum ich vi nicht mehr benutze.
\r
ist<CR>
und\n
ist<LF>
. Es bezieht sich nicht auf die eigentliche Frage, warum\n\r
verhalten sich unterschiedlich in unterschiedlichen Kontexten.