Происхождение асимметрии восходит к истории компьютеров.
Укороченная версия:
<CR> & <LF> (Carriage-Return and Linefeed)
==
\r & \n
Длинная версия:
первые экраны были в основном цифровыми версиями телетайпа (TTY) и использовали управляющие коды для генерации поведения, аналогичного принтерам. Возврат каретки переместил курсор (или печатающую головку) в начальный столбец. Перевод строки переместился на следующий ряд (на экране) и подал бумагу вперед на одну строку.
Для принтеров вы должны были сделать сопряжение, <CR><LF>
иначе ваш вывод не будет выглядеть правильно. На ранних экранах проблема все еще сохранялась.
DOS (и sorta-Windows после) следуют старому стандарту и сохраняют текст с помощью <CRLF>
.
* Текст NIX (как большинство пользователей vi знакомы) использует только <LF>
для эффективности.
Для тестирования в Windows используйте Word / Wordpad и сохраните несколько строк текста «как тип: Текст - формат MS-DOS». Затем откройте тот же файл в блокноте. Это должно выглядеть нормально. Затем сохраните тот же файл в Word / Wordpad «как type: Text». Блокнот будет игнорировать все новые строки и запускать строки вместе. [Формат текста блокнота по умолчанию соответствует \r\n
комбинации, в то время как Word / Wordpad по умолчанию равен \n
.]
\ r является кодовым эквивалентом <CR>
\ n - это эквивалент кода <LF>
И по моему (очень ограниченному) опыту работы с vi, он попытался бы «исправить» <CRLF>
комбинацию из моего текстового редактора DOS. В итоге vi удалил один символ и заменил на <NUL>
. Большая часть причины, по которой я перестал использовать vi.
\r
есть<CR>
и\n
есть<LF>
. Это не относится к актуальному вопросу о том, почему\n\r
ведут себя по- разному в разных контекстах.