Geneza asymetrii sięga wstecz do historii obliczeń.
Krótka wersja:
<CR> & <LF> (Carriage-Return and Linefeed)
==
\r & \n
Wersja długa:
pierwsze ekrany były w zasadzie cyfrowymi wersjami teletypów (TTY) i wykorzystywały kody sterujące do generowania podobnych zachowań do drukarek. Powrót karetki zabrał kursor (lub głowicę drukującą) do kolumny początkowej. Podawanie linii przechodzi do następnego rzędu (na ekranie) i podaje papier do przodu o jedną linię.
W przypadku drukarek trzeba było sparować, w <CR><LF>
przeciwnym razie wydruk nie będzie wyglądał dobrze. Na wczesnych ekranach problem nadal się sprawdzał.
DOS (i później Windows) postępował zgodnie ze starym standardem i zapisuje tekst za pomocą <CRLF>
.
* Tekst NIX (jak większość użytkowników vi zna) używa wyłącznie w <LF>
celu zwiększenia wydajności.
Aby przetestować w systemie Windows, użyj programu Word / Wordpad i zapisz kilka wierszy tekstu „jako typ: Tekst - format MS-DOS”. Następnie otwórz ten sam plik w Notatniku. Powinno to wyglądać normalnie. Następnie zapisz ten sam plik w programie Word / Wordpad „jako typ: Tekst”. Notatnik zignoruje wszystkie znaki nowej linii i poprowadzi linie razem. [ \r\n
Domyślny format tekstu w Notatniku to kombinacja, podczas gdy Word / Wordpad domyślnie to \n
.]
\ r jest kodowym odpowiednikiem <CR>
\ n jest kodowym odpowiednikiem <LF>
W moim (bardzo ograniczonym) doświadczeniu z vi, próbowałbym „naprawić” <CRLF>
kombinację z mojego edytora tekstowego DOS. vi skończyło się usunięciem jednej postaci, zastępując ją <NUL>
. Duża część powodów, dla których przestałem używać vi.
\r
jest<CR>
i\n
jest<LF>
. Nie odnosi się do faktycznego pytania, dlaczego\n\r
zachowują się inaczej w różnych kontekstach.