Что такое перевод каретки

Возврат каретки

Возвра́т каре́тки — управляющий символ или механизм, используемый для возвращения позиции устройства к началу строки. Часто обозначается как CR (от англ. carriage return ).

Содержание

Происхождение термина

Каретка (от итал. carretta — тележка) — узел машины или механизма, несущий ряд деталей и передвигающийся по направляющим или вращающийся в подшипниках. В пишущих машинках имела вид рамки с валиком для бумаги. [1]

Пишущие машинки

Первоначально термин «возврат каретки» относился к механизму или рычагу на пишущей машинке. Он использовался после ввода строки и заставлял узел, держащий бумагу (каретку), вернуться вправо, так что машинка была готова печатать дальше на левой стороне бумаги (предполагая письмо слева направо). Рычаг обыкновенно продвигал бумагу на следующую строку. Электрический возврат каретки впервые появился на электрических пишущих машинках фирмы Smith Corona (англ.) в 1960 году. Клавиша, выполнявшая это действие, обыкновенно обозначалась «возврат каретки» (англ. carriage return ) или «возврат» ( return ). В других пишущих машинках, в том числе Selectric (англ.), печатающая головка двигалась при печатании, а бумага оставалась неподвижной. В них эта клавиша возвращала влево печатающую головку и иногда называлась «возврат держателя» (англ. carrier return ).

С целью улучшения для неанглоговорящих для обозначения этой клавиши был введён знак ↵ (U+21B5).

Компьютеры

Функции возврата каретки и перевода строки были разделены по двум причинам:

Уже в 1901 году код Бодо содержал отдельные знаки возврата каретки и новой строки.

Многие компьютерные программы используют для обозначения конца строки знак возврата каретки отдельно или вместе со знаком перевода строки, но для этой задачи используются и другие знаки; другие используют его только для разбиения абзаца. Некоторые стандарты, вводящие собственные обозначения для управления строками и абзацами (например, HTML), и многие языки программирования обрабатывают знаки возврата каретки и новой строки как пробел.

В ASCII и Юникоде возврат каретки определён как 13 (или шестнадцатеричное 0D); он также может обозначаться как Ctrl + M или ^M. В Си и многих других языках программирования \r обозначает возврат каретки. [2]

Источник

Этот день мы приближали, как могли — блокнот в Windows 10 стал понимать юниксовый перевод строки

Notepad в windows 10 начал понимать юниксовый перевод строки, а не только формат Windows.

С проблемой «каши» вместо удобочитаемого текста десятилетиями сталкивались те, кто пытался открыть в среде Windows текстовые документы, подготовленные на других операционных системах. Теперь же всё в одночасье изменяется. И это изменение столь же мало, сколь и эпично по своим практическим результатам и идеологическим последствиям. Microsoft вновь пытается играть в кросс-интеграцию и поддержку открытых стандартов.

Долгие годы Windows Блокнот мог нормально отображать только те текстовые документы, которые содержали символы начала новой строки в формате Windows End of Line (EOL) — «возврат каретки» (CR) и «подача на строку» (LF). На деле это приводило к тому, что Notepad не смог правильно отобразить содержимое текстовых файлов, созданных в Unix, Linux и macOS, где в качестве признака конца строки использовался только символ LF.

Что такое перевод каретки. Смотреть фото Что такое перевод каретки. Смотреть картинку Что такое перевод каретки. Картинка про Что такое перевод каретки. Фото Что такое перевод каретки

Что такое перевод каретки. Смотреть фото Что такое перевод каретки. Смотреть картинку Что такое перевод каретки. Картинка про Что такое перевод каретки. Фото Что такое перевод каретки
Обратите внимание, что строка состояния указывает обнаруженный формат EOL текущего открытого файла.

Так же для гибкого управления новой возможностью в разделе реестра [HKEY_CURRENT_USER\Software\Microsoft\Notepad] вводятся два дополнительных ключа:

Что такое перевод каретки. Смотреть фото Что такое перевод каретки. Смотреть картинку Что такое перевод каретки. Картинка про Что такое перевод каретки. Фото Что такое перевод каретки

По накалу страстей спор о способе начала новой строки в электронных документах сравним со спором о пробелах и табуляциях в исходных текстах программ. У этого противостояния «за строку» было много причин, как лежащих в области древних стандартов и традиций, так и берущих свои корни в особенностях конструкции печатных машин и телетайпов. Не меньшую роль сыграло и стремление одних программистов буквально выполнять (интерпретировать) команды и управляющие символы, а других — следовать здравому смыслу.

Что мы можем узнать о проблеме из Википедии

Исторически на механических пишущих машинках был рычаг, который возвращал каретку к левому краю страницы и прокручивал вал, подвигая бумагу вверх на строку. На телетайпах и более поздних алфавитно-цифровых печатающих устройствах (АЦПУ) вместо каретки была головка, в лазерных принтерах она перестала быть материальной, но в термине возврат каретки всё это продолжали называть кареткой, чтобы его не менять. На телетайпах возврат каретки и подачу строки разделили, откуда традиция представления перевода строки как CR+LF перешла и к текстовым файлам.

Системы, основанные на ASCII или совместимом наборе символов, используют или LF (перевод строки, 0x0A), или CR (возврат каретки, 0x0D) по отдельности, или последовательность CR+LF. Эти названия основаны на командах принтера: перевод строки означает, что одна строка на бумаге должна быть перенесена при печати, а возврат каретки означает, что каретка печатающего устройства должна вернуться к началу текущей строки.

Но как известно, стандарты стандартами, а реализации у всех часто выходят разными. И масла в огонь подливает необходимость корректно отображать унаследованные документы, созданные до эпохи юникода. Отсутствие единого общепринятого представления перевода строки в разных операционных системах надолго осложнило обмен текстовыми данными между ними.

Юникод старается примирить эту разницу, уравнивая CR, LF и CR+LF, однако вступает в противоречие с наследуемым им ASCII при трактовке последовательности LF+CR, не предварённой CR: согласно ASCII это один перевод строки, а согласно Юникоду — два.

Источник

Перевод строки

Перевод строки, или разрыв строки — продолжение печати текста с новой строки, то есть с левого края на строку ниже, или уже на следующей странице.

Разделителем строк, обозначающим место перевода строки, в текстовых данных служит один или пара управляющих символов, а в размеченном тексте также — определённый тег (в HTML — тег
, от англ. break — «разрыв»). Разделитель строк также называют просто переводом строки, когда нет надобности их различать.

Вместе с другими действиями перевод строки выполняется также перед следующим абзацем или страницей.

Содержание

Терминология

Таким образом, вывод последовательности CR+LF в семантике терминала гарантирует действие «создание новой строки».

Терминалы (и их эмуляторы) могут также проводить различные преобразования символов (например, LFCR+LF, CRCR+LF) при вводе и выводе текста.

Жёсткий возврат, иногда аппаратный возврат — разделитель строк, поставленный пользователем.

Мягкий возврат — перевод строки, выполненный текстовым процессором в том месте текста, которое им выбрано. Мягкий возврат является разделителем строк для текстового процессора и не является таковым для пользователя.

В ASCII

Системы, основанные на ASCII или совместимом наборе символов, используют или LF (перевод строки, 0x0A), или CR (возврат каретки, 0x0D) по отдельности, или последовательность CR+LF; см. ниже историческую причину для соглашения CR+LF. Эти названия основаны на командах принтера: перевод строки означает, что одна строка на бумаге должна быть перенесена при печати, а возврат каретки означает, что каретка печатающего устройства должна вернуться к началу текущей строки.

В Юникоде

По стандарту, любое совместимое с Юникодом приложение должно воспринимать как перевод строки каждый из нижеследующих символов:

Трудности

Нет общепринятых сокращений русских терминов. ВК (Возврат Каретки) совпадает по написанию с сокращением от англ. BreaK («разрыв [строки]», — то же, что перевод строки), а ПС не различает Подачу Строки и Перевод Строки.

Разница представлений

Перевод строки при вводе с клавиатуры представлен единообразно во всех системах — символом CR, и в системах с другим представлением перевода строки текстовые данные приходится перекодировать.

Последняя строка

История

На перфокартных системах хранения данных одна строка записывалась на одну перфокарту, поэтому строка была заданной длины, по количеству колонок (обычно 80). Строки короче добивались пробелами, а строки длиннее обрезались. Разделителя строк не было, а неявный перевод строки предполагался через каждые 80 символов. Некоторые ранние мейнфреймовые операционные системы переняли это для хранения текста в файлах, где уже не было естественного ограничения на длину строки.

На механических пишущих машинках был рычаг, который возвращал каретку к левому краю страницы и прокручивал вал, подвигая бумагу вверх на строку. На телетайпах и более поздних алфавитно-цифровых печатающих устройствах (АЦПУ) вместо каретки была головка, в лазерных принтерах она перестала быть материальной, но в термине возврат каретки всё это продолжали называть кареткой, чтобы его не менять. На телетайпах возврат каретки и подачу строки разделили, откуда традиция представления перевода строки как CR+LF перешла и к текстовым файлам.

Конец строки

Телетайпы сначала печатали на рулонной бумаге, и сообщения начинали и заканчивали переводом строки, чтобы каждое начиналось с новой строки наверняка. Отсюда пошёл обычай включать разделитель сообщений в состав самого сообщения.

На компьютерах появился диалоговый режим работы, когда поочерёдно печатались вводимые управляющие сообщения пользователя и ответные программные сообщения. Пользователь после сообщения всегда переводил строку, так как одновременно это означало команду к исполнению, а вот программы после своего сообщения строку иногда не переводили, несмотря на предписание. Устройство вывода изначально не было приспособлено к тому, чтобы терминал мог следить за переводами строк, и реализовать это было трудно, поэтому чтобы ввод пользователя начинался с новой строки наверняка, управляющий диалогом терминал после программного сообщения переводил строку тоже. Помещать перевод строки предписывалось и в конце текстового файла.

Забота о разделении сообщений легла на терминал, и думать об этом перестали, а перевод строки в конце текста переосмыслился как конец последней строки, вместе с чем как концы строк переосмыслились и вообще все переводы строк, чему способствовало удобство работы с регулярно завершёнными строками с точки зрения программирования, сродни нуль-терминированным строкам. Так обычай включать разделитель сообщений в состав сообщения перешёл в обычай включать разделитель строк в состав строки.

Лишняя строка в конце файла обычно не представляет хлопот, поэтому перевод строки до сих пор называют концом строки, а разделитель строк — символом конца строки (EOL, англ. end of line ).

Перетекание разделителя в завершитель и обратно бывает не только у перевода строки. Так, точка с запятой в языке Си команды завершает, а в Паскале их разделяет. В письменной речи после нескольких предложений точку почти всегда ставят, а после одиночного — чаще нет. Это колебание хорошо видно в списках, где одиночные предложения иногда начинают с большой буквы, а иногда — с маленькой.

Абзац

На телетайпах, а потом и в первых редакторах разделение текста на абзацы не имело своего особого представления, для этого использовали пустые строки или отступ из нескольких пробелов, а переводы строки внутри абзаца проставляли вручную.

Позже в редакторах появился автоматический перенос, выполняемый на лету при отрисовке текста каждый раз заново. Для отличения от ручного его назвали мягким возвратом, а ручной — жёстким (перенос называли и просто возвратом, см. раздел Разница представлений). Разделитель строк при этом переносил как раньше, но приобрёл смысл ещё и разделителя абзацев — для тех строк, в которых срабатывал автоперенос и которые становились при этом абзацами. Включатель такого режима назвали переносом по словам (англ. word wrap ). При автопереносе ручной перенос разрывал абзац, межабзацный интервал делался как раньше (в новых терминах — перемежением пустым абзацем), но основное качество абзаца — независимость от разбиения на строки — было достигнуто.

Режим автопереноса включался и выключался пользователем вручную, определить это программно было трудно, то есть, избавившись от ручного переноса, получили другую ручную операцию. Стало понятно, что не обойтись без более автоматизирующего разнесения разделителя строк и разделителя абзацев, то есть для них понадобились два разных символа.

Чтобы не заботиться о совместимости с уже существующим в ASCII разделителем строк/абзацев, разработчики не стали использовать символы ASCII для разделителя строк и разделителя абзацев. В HTML использовали теги
и

, в Юникоде — символы U+2028 и U+2029, соответственно. В Википедии абзацы можно разделять пустыми строками, отображаемыми при этом полноценным интервалом.

Источник

Работа с Возвратом каретки (\r) в Python

Возврат каретки в Python (‘r’) помогает нам переместить курсор в начало строки, не перемещая его в новую строку.

Вступление

Иногда мы попадаем в ситуацию, когда хотим вернуться к исходной точке той же линии. В этой статье мы поможем вам понять концепцию возврата каретки в python или \r в python.

Что такое возврат каретки (\r) в Python?

Это помогает нам переместить курсор в начало строки, не перемещая его на новую строку.

Способы использования возврата каретки

Мы покажем все типы, с помощью которых мы можем использовать ‘\r’ в python.

1. Использование только возврата каретки в Python

В этом примере мы будем использовать только возврат каретки в программе между строками.

2. Использование возврата каретки в Python с символом новой строки

В этом примере мы будем использовать ‘\r’ с новым символом строки(\n) в строковой программе.

3. Использование возврата каретки в python с пробелом табуляции

В этом примере мы будем использовать каретку или \r с комбинацией табуляции или \t в программе между строками.

4. Использование возврата каретки в python, табуляции и символа новой строки

В этом примере мы будем смешивать все символы, такие как возврат каретки(\r), пробел табуляции(\t) и символ новой строки(\n) в данной строке, и видеть выходные данные, чтобы мы могли более четко понять использование \r.

Как \r и \n обрабатываются в Linux и Windows

Как мы все знаем, мы используем \r для возврата каретки и \n для новой строки в Windows. Но для разных операционных систем существуют разные соглашения. Разница проста, т. е. разработчики ОС должны были выбрать, как мы должны представлять новую строку в тексте в компьютерных файлах. По какой-то причине в мире Unix/Linux в качестве нового маркера линии был выбран один LF(Line feed). MS-DOS выбрала CR+LF, а Windows унаследовала \n в качестве новой строки. Таким образом, мы узнали, что разные платформы имеют разные соглашения.

Должен Читать

Вывод

В этом уроке мы узнали о понятии возврата каретки (‘\r’) с его определением. Также понимаются все способы, с помощью которых мы можем использовать ‘\r’ по – разному-по-разному подробно с помощью примера. Все примеры подробно объясняются.

Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.

Источник

Русские Блоги

Интересная история «возврата каретки» и разницы между «возвратом каретки» и «переводом строки»

При вводе текста нажатие клавиши Enter приведет к началу новой строки. Это обычное использование неизбежно введет в заблуждение новичков в C / C ++: возврат каретки (CR, возврат каретки) ‘\ r’ и перевод строки (LF, перевод строки) ‘\ n’ понимание, здесь мы пока отложим этот вопрос в сторону, а поговорим о нем позже. Давайте сначала посмотрим на интересный исторический источник «возврата каретки».

Происхождение клавиши ввода восходит к эпохе механических английских пишущих машинок. На этой пишущей машинке есть часть, называемая «автомобиль персонажа», которая, вероятно, является нижней частью, которая продолжает бегать.

Что такое перевод каретки. Смотреть фото Что такое перевод каретки. Смотреть картинку Что такое перевод каретки. Картинка про Что такое перевод каретки. Фото Что такое перевод каретки

Что такое перевод каретки. Смотреть фото Что такое перевод каретки. Смотреть картинку Что такое перевод каретки. Картинка про Что такое перевод каретки. Фото Что такое перевод каретки

Что такое перевод каретки. Смотреть фото Что такое перевод каретки. Смотреть картинку Что такое перевод каретки. Картинка про Что такое перевод каретки. Фото Что такое перевод каретки

Итак, что же будет с Linux таким же образом? Пожалуйста, продолжай смотреть.

Что такое перевод каретки. Смотреть фото Что такое перевод каретки. Смотреть картинку Что такое перевод каретки. Картинка про Что такое перевод каретки. Фото Что такое перевод каретки

Что такое перевод каретки. Смотреть фото Что такое перевод каретки. Смотреть картинку Что такое перевод каретки. Картинка про Что такое перевод каретки. Фото Что такое перевод каретки

Через vim в Linux мы видим, что между a, ab и abc есть только один бит символа, который соответствует 0a, который является ‘\ n’ в коде ASCII, что означает, что в Linux используется только один символ новой строки. Представлять.

Тогда давайте вернемся к обсуждению ‘\ r’ и ‘\ n’ в C / C ++. В C / C ++ исходный стиль сохраняет это понимание символа новой строки. Символ возврата каретки ‘\ r’ означает только возврат в начало строки и не включает действие новой строки. Новая строка завершается символом ‘\ n ‘. Новички должны различать значение этих двух символов.

Теперь давайте воспользуемся простым кодом, чтобы проверить эффект ‘\ r’ ‘\ n’ ‘\ b’.

(1) Код C:

Что такое перевод каретки. Смотреть фото Что такое перевод каретки. Смотреть картинку Что такое перевод каретки. Картинка про Что такое перевод каретки. Фото Что такое перевод каретки

(2) Код C ++:

Что такое перевод каретки. Смотреть фото Что такое перевод каретки. Смотреть картинку Что такое перевод каретки. Картинка про Что такое перевод каретки. Фото Что такое перевод каретки

(3) Анализ:

Во-первых, давайте посмотрим на первую строку вывода «abc \ r \ ncba \ rrr \ bz \ n»:

Затем, чтобы более интуитивно доказать, что перемещается только курсор без удаления символов, давайте посмотрим на вторую строку кода. «abcd \ b \ b», после двух \ bs курсор перемещается под c (или квадратный курсор на c, или I-образный курсор перед c), чтобы курсор оставался для наблюдения. Мы добавлены getchar () и cin.get ().

Итак, результат после запуска программы будет:

В то же время вы можете видеть, что курсор остается в указанной выше позиции.Конечно, если вы введете символ в это время, c или даже d будут перезаписаны с позиции курсора.

Наконец, приложите для справки таблицу с экранированными символами.

Побег персонаж

значимость

Значение кода ASCII (десятичное)

Значение кода ASCII (шестнадцатеричное)

Колокол (BEL)

0x07

Backspace (BS), переместить текущую позицию в предыдущий столбец

0x08

Подача страницы (FF), переместить текущую позицию в начало следующей страницы

0x0C

Перевод строки (LF), переместить текущую позицию в начало следующей строки

0x0A

Возврат каретки (CR), переместить текущую позицию в начало этой строки

0x0D

Горизонтальная табуляция (HT) (перейти к следующей позиции TAB)

0x09

Вертикальная таблица (VT)

0x0B

Представляет символ обратной косой черты « \ »

0x5C

Представляет собой одинарную кавычку (апостроф).

0x27

Представляет символ двойной кавычки

0x22

\?Представляет собой вопросительный знак0630x3F

Нулевой символ (NULL)

0x00

Любой символ, представленный от 1 до 3 восьмеричных чисел.

Трехзначное восьмеричное

Любой символ, представленный от 1 до 2 шестнадцатеричных чисел

Двузначное шестнадцатеричное

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *