Dlaczego jest ^M
używany do reprezentowania powrotu karetki w VIM i innych kontekstach?
Domyślam się, że M
jest to trzynasta litera alfabetu łacińskiego, a znak powrotu karetki jest \x0D
dziesiętny 13
. Czy to jest powód? Czy to przedstawienie jest gdziekolwiek udokumentowane?
Zauważam, że Tab jest reprezentowany przez ^I
, która jest dziewiątą literą alfabetu łacińskiego. I odwrotnie, tab jest \x09
dziesiętny 9
, co potwierdza moją teorię podaną powyżej. Gdzie jednak można to udokumentować jako fakt?
terminal
encoding
special-characters
dotancohen
źródło
źródło
^H
usuwa znak lub pozwala na nadruk (na przykład jakon^H~
przestarzały sposób produkcji ñ) lub jakiekolwiek inne rzeczywiste użycie znaku kontrolnego jest odrębne od notacji daszka.Odpowiedzi:
Uważam, że to, o co OP tak naprawdę pytał, nazywa się Caret Notation .
Pełna lista znaków kontrolnych ASCII wraz z notacją daszka można znaleźć tutaj
Odnośnie vima i innych edytorów tekstu: Zazwyczaj zobaczysz ^ M tylko wtedy, gdy otworzysz plik tekstowy w formacie Windows (CRLF) w edytorze, który oczekuje zakończenia linii Linux (LF). 0x0A jest renderowane jako podział linii, 0x0D tuż przed wydrukowaniem jako ^ M. W większości przypadków domyślne ustawienia edytora obejmują „automatyczne rozpoznawanie zakończeń linii”.
źródło
^A
jest0x41 xor 0x40
,0x01
i^?
jest0x3F xor 0x40
, lub0x7F
.<---
klucz (również myląco nazywany backspace) na terminalach podobnych do VT100.To jest dokładnie powód.
ASCII definiuje znaki 0–31 jako niedrukowalne kody sterujące. Oto fragment strony
ascii(7)
podręcznika z losowego systemu Linux (man ascii
), aż do CR (13):Zazwyczaj te znaki są generowane za Controlpomocą litery wymaganej. Z Gtego powodu w teletypach i wczesnych klawiaturach terminali napisano „BELL” .
Dokumentem standardowym, który zdefiniował ASCII jest ASA X3.4-1963 , który został opublikowany przez American Standards Association w 1963 roku. Nie mogę znaleźć oryginalnego dokumentu na ich stronie internetowej, ale ten fragment oryginalnego dokumentu pokazuje tabelę znaków, w tym powyższe kody kontrolne.
źródło
^M
jest skrótem dla Control-M. Na terminalu należy nacisnąć klawisz Control razem z klawiszem M, aby wysłać kod ASCII 0x0D znany również jako powrót karetki.Notacja sięga najwcześniejszych Teletypów ASCII (ok. 1963 r.). Był klawisz CTRL, który przełączał bit 0x40, tak że CTRL-M (powrót karetki) wynosiłby 0D zamiast 4D, CTRL-G (dzwonek) miałby wartość 07 zamiast 47, CTRL-L (wysuw formularza) zamiast 0C 4C.
Nie było „projektu” w przypisywaniu poszczególnych liter do poszczególnych funkcji, była tylko szansa, że kiedy kurz opadł z przypisywania kodów ASCII, klawisz M był nieco inny niż powrót karetki, a zatem powrót karetki stał się CTRL-M.
Oto najlepsze zdjęcie, jakie mogę znaleźć na klawiaturze ASR33. Jak widać, nazwy znaków kontrolnych są drukowane małymi literami na odpowiednich klawiszach alfa.
Zdjęcie : Marcin Wichary, Użytkownik: AlanM1 (Pochodzi (przycięty) z pliku: ASR-33 2.jpg ) [ CC BY 2.0 ], za pośrednictwem Wikimedia Commons
Klawisz M nie ma na nim zapisu, ponieważ istnieje dedykowany klawisz „RETURN”, więc CTRL-M jest redundantny.
źródło
Kreska (^) jest po prostu skrótem do pisania, przytrzymaj klawisz Control - CTRL w dół.
W dawnych dobrych czasach można było wpisywać te kody (patrz wyżej), klawisz Ctrl + G (^ G) powodował, że terminal zaczynał „ding”
Kiedy chcesz dodać CR w Vimie, użyj Ctrl + M etc tab = Ctrl + I
źródło
Potrzeba wizualnego sposobu wyświetlania znaków, które z definicji nie są drukowalne.
Tak więc ktoś na początku lat 70. (a może wcześniej) (pamiętam, że widziałem to na CP / M, a ktoś już wspomniał o TOPS) zdecydował, że „daszek plus litera” będzie symbolem 26 niedrukowalnych znaków kontrolnych ASCII o wartościach 1 do 26. Wartość 0 jest / została wydrukowana jako ^ @, a wartość 127 jako ^ ?.
źródło
Gdzie jest to udokumentowane, ta strona zawiera listę każdego znaku kontrolnego, wraz z tym, jak wprowadzić / przedstawić go za pomocą klawisza sterującego (chociaż pierwszy, znak ascii 0, nie ma reprezentacji klawisza sterującego) i nie ma nic dla znaku 127. I zapewnia źródła na dole
https://www.cs.tut.fi/~jkorpela/chars/c0.html
Można się dziwić, biorąc pod uwagę, że istnieją 33 znaki kontrolne (znaki ASCII 0–31, a więc 32 znaki, + znak 127. tak, = 33 znaki) Jak wszystkie byłyby reprezentowane, ponieważ w alfabecie jest tylko 26 liter. Używa Ctrl-A dla znaku Ascii 1, Ctrl-Z dla znaku Ascii 26, a tam, gdy osiągnie Ctrl-Z, używa
[
\
]
^
_
Wyświetla Ctrl-Z jako SUB, chociaż w DOS-ie i wierszu polecenia cmd jest to EOF, a jako użytkownik technologii używasz go, gdy robisz,
copy con a.a
gdziea.a
jest twój plik. Wpisujesz tekst i kończysz go klawiszem Ctrl-Z, co w zabawny sposób nie wprowadza znacznika EOF. Ale mówi CMD, że to koniec pliku, więc CMD je zapisuje.Ta strona cs.tut.fi daje to jako źródło
http://www.wps.com/texts/codes/X3.4-1963/index.html
ale jest to uszkodzony link, ale dostępny na archive.org ma postać JPG
Amerykański standardowy kod wymiany informacji
Standard ASA X3.4-1963
https://web.archive.org/web/20010430085116/http://www.wps.com/texts/codes/X3.4-1963/index.html
źródło
^I
zakładkę w standardowym bash: wpiszls ~/^I^I
i powinieneś zobaczyć wszystkie foldery w swoim katalogu domowym.W tej tabeli możesz zobaczyć wszystkie niepriorytetowe Controlmapowanie znaków ASCII .
źródło