L'origine de l'asymétrie remonte dans l'histoire de l'informatique.
Version courte:
<CR> & <LF> (Carriage-Return and Linefeed)
==
\r & \n
Version longue:
les premiers écrans étaient essentiellement des versions numériques de télétypes (ATS) et utilisaient des codes de contrôle pour générer un comportement similaire aux imprimantes. Le retour chariot a amené le curseur (ou la tête d'impression) dans la colonne de départ. Le saut de ligne est passé à la ligne suivante (sur un écran) et a fait avancer le papier d'une ligne.
Pour les imprimantes, vous deviez faire une paire <CR><LF>ou votre sortie ne serait pas correcte. Sur les premiers écrans, le problème était toujours d'actualité.
DOS (et sorta-Windows après) a suivi l'ancien standard et enregistre le texte avec <CRLF>.
* Le texte NIX (comme la plupart des utilisateurs de vi le connaissent) n'utilise que <LF>pour l'efficacité.
Pour tester sous Windows, utilisez Word / Wordpad et enregistrez quelques lignes de texte "comme type: Texte - format MS-DOS". Ouvrez ensuite ce même fichier dans le Bloc-notes. Cela devrait avoir l'air normal. Enregistrez ensuite le même fichier dans Word / Wordpad "en tant que type: Texte". Le Bloc-notes ignorera toutes les nouvelles lignes et exécutera les lignes ensemble. [Le format de texte du Bloc-notes correspond par défaut à la \r\ncombinaison tandis que Word / Wordpad par défaut \n.]
\ r est l'équivalent de code de <CR>
\ n est l'équivalent de code de <LF>
Et dans mon expérience (très limitée) avec vi, il essaierait de "corriger" la <CRLF>combinaison de mon éditeur de texte DOS. vi a fini par supprimer un caractère, en le remplaçant par <NUL>. Une grande partie de la raison pour laquelle j'ai cessé d'utiliser vi.
\rest<CR>et\nest<LF>. Il n'aborde pas la question réelle de savoir pourquoi\n\rse comporter différemment dans différents contextes.