Почему ^M
используется для обозначения возврата каретки в VIM и других контекстах?
Я предполагаю, что M
это 13-я буква латинского алфавита и возврат каретки \x0D
или десятичный 13
. Это причина? Задокументировано ли это представление где-нибудь?
Я заметил, что Tab представлен как ^I
, что является девятой буквой латинского алфавита. И наоборот, Tab является \x09
или десятичным 9
, что поддерживает мою теорию, изложенную выше. Однако где это может быть задокументировано как факт?
terminal
encoding
special-characters
dotancohen
источник
источник
^H
идет ли удаление символа или допускается наложение текста (напримерn^H~
, устаревший способ создания символа ñ) или любое другое фактическое использование управляющего символа, является отдельным от обозначения каретки.Ответы:
Я считаю, что то, о чем на самом деле спрашивал ОП, называется каретной нотацией .
Полный список управляющих символов ASCII вместе с обозначением каретки можно найти здесь
Относительно vim и других текстовых редакторов: вы обычно увидите ^ M, только если откроете текстовый файл в формате Windows (CRLF) в редакторе, который ожидает окончания строки в Linux (LF). 0x0A отображается как разрыв строки, 0x0D перед тем, как печатается как ^ M. В большинстве случаев настройки редактора по умолчанию включают «автоматическое распознавание концов строк».
источник
^A
есть0x41 xor 0x40
, или0x01
и^?
есть0x3F xor 0x40
, или0x7F
.<---
ключом (также, как ни странно, называемый backspace) на терминалах, подобных VT100.Именно в этом причина.
ASCII определяет символы 0-31 как непечатные управляющие коды. Вот выдержка из
ascii(7)
страницы руководства из случайной системы Linux (man ascii
), вплоть до CR (13):Обычно эти символы генерируются с помощью Controlи буквы, относящейся к требуемому символу. По Gэтой причине на телетайпах и ранних терминальных клавиатурах над значком была написана надпись «BELL» .
Стандартным документом, который определил ASCII, является ASA X3.4-1963 , который был опубликован Американской ассоциацией стандартов в 1963 году. Я не могу найти оригинальный документ на их веб-сайте, но в этом отрывке из исходного документа показана таблица символов, включая контрольные коды выше.
источник
^M
это сокращение от Control-M. На терминале вы должны нажать клавишу Control вместе с клавишей M, чтобы отправить код ASCII 0x0D, также известный как возврат каретки.Запись восходит к самым ранним ASCII телетайпам (около 1963 г.). Была клавиша CTRL, которая переключала бит 0x40 так, что CTRL-M (возврат каретки) будет 0D вместо 4D, CTRL-G (звонок) будет 07 вместо 47, CTRL-L (подача формы) будет 0C вместо 4C.
Не было никакого «замысла» в назначении определенных букв определенным функциям, это был просто шанс, что, когда пыль установилась от назначения кодов ASCII, клавиша M была на один бит отличной от возврата каретки, и поэтому возврат каретки стал CTRL-M.
Вот лучший снимок клавиатуры ASR33, который я могу найти. Как видите, имена управляющих символов печатаются маленькими буквами на соответствующих буквенных клавишах.
Изображение Marcin Wichary, пользователь: AlanM1 (получено (обрезано) из файла: ASR-33 2.jpg ) [ CC BY 2.0 ], через Wikimedia Commons
Ключ M не имеет обозначения, потому что есть выделенный ключ «RETURN», поэтому CTRL-M является избыточным.
источник
Символ каретки (^) - это просто сокращение для записи, удерживая нажатой клавишу «Control» - CTRL.
В старые добрые времена вы могли вводить эти коды (см. Выше) напрямую, клавиша Ctrl + G (^ G) заставляла терминал «дин»
Если вы хотите добавить CR в Vim, вы используете клавиши Ctrl + M и т. Д. = Ctrl + I
источник
Потребность в некотором визуальном способе отображения того, что по определению является непечатными символами.
Итак, кто-то в начале 1970-х (или, может быть, раньше) (я помню, что видел это на CP / M, а кто-то еще уже упомянул TOPS) решил, что «символ каретки плюс» будет символом для 26 непечатаемых управляющих символов ASCII со значениями С 1 по 26. Значение 0 печатается как ^ @, а значение 127 - как ^ ?.
источник
Где это задокументировано, на этой странице перечислены все управляющие символы с указанием того, как вводить / представлять их с помощью управляющего ключа (хотя первый, ascii-символ 0, не имеет представления управляющего ключа), и для него нет ничего для символа 127. И это предоставляет источники внизу
https://www.cs.tut.fi/~jkorpela/chars/c0.html
Можно задаться вопросом, учитывая, что есть 33 управляющих символа (символы ASCII 0-31, 32 символа, + символ 127. итак, 33 символа). Как все они будут представлены, поскольку в алфавите всего 26 букв. Ну, он использует Ctrl-A для символа Ascii 1, Ctrl-Z для символа ascii 26, и там, как только он достигает Ctrl-Z, он использует
[
\
]
^
_
Он отображает Ctrl-Z как SUB, хотя в DOS и в командной строке cmd это EOF, и вы, как технический специалист, используете его, когда делаете,
copy con a.a
гдеa.a
находится ваш файл. Вы вводите текст и завершаете его нажатием Ctrl-Z, который, как ни странно, не вводит маркер EOF. Но говорит CMD, что это конец файла, поэтому CMD записывает его.Эта веб-страница cs.tut.fi предоставляет этот источник
http://www.wps.com/texts/codes/X3.4-1963/index.html.
но это неработающая ссылка, но доступная на archive.org в виде JPG
Американский стандартный код для обмена информацией
ASA стандарт X3.4-1963
https://web.archive.org/web/20010430085116/http://www.wps.com/texts/codes/X3.4-1963/index.html
источник
^I
для вкладки в стандартном bash: type,ls ~/^I^I
и вы должны увидеть все папки в вашем домашнем каталоге.Вы можете увидеть все , не pritable ASCII символов Controlотображения в этой таблице.
источник