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\n
combinaison 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.
\r
est<CR>
et\n
est<LF>
. Il n'aborde pas la question réelle de savoir pourquoi\n\r
se comporter différemment dans différents contextes.