سؤال لماذا يتم تمثيل الأحرف الخاصة مثل "حرف الإرجاع" كـ "^ M"؟


لماذا ^M تستخدم لتمثيل عودة النقل في VIM وغيرها من السياقات؟ 

تخميني هو ذلك M هو الحرف الثالث عشر من الأبجدية اللاتينية وعودة النقل \x0D أو عشري 13. هل هذا هو السبب؟ هل هذا التمثيل موثق في أي مكان؟

ألاحظ أن يتم تمثيل علامة التبويب ^Iوهو الحرف التاسع من الأبجدية اللاتينية. على العكس ، علامة التبويب هي \x09 أو عشري 9، والتي تدعم نظريتي المذكورة أعلاه. ومع ذلك ، أين يمكن توثيق هذا كحقيقة؟


91
2018-06-05 08:31


الأصل


ضع في اعتبارك أيضًا أن dos / windows استخدم "0x0d 0x0a" ، كما تمت الإشارة إليها أيضًا باسم "CR LF". لكن استخدام برنامج unix / linux هو "0x0a" أو "LF" فقط. لذلك عند فتح وثيقة ويندوز في لينكس فإنه يكشف "CR" اضافية ، وعند فتح وثيقة لينكس في ويندوز لا يكتشف خطوط جديدة. - LatinSuD
ترتبط علامة النجمة (LatinSuD) (والاستخدام المقابل للمفتاح Ctrl) بمجموعة التحكم C0 (تاريخياً جزء من ASCII) مباشرةً وليس ما إذا كان نظام تشغيل معين أو برنامج يستخدم جزءًا من تلك المجموعة في تمثيل خطوط جديدة أو أي شيء آخر. وبالمثل ، سواء ^Hحذف حرف أو يسمح الطباعة المتراكبة (مثل n^H~ كوسيلة عفا عليها الزمن لإنتاج - أو أي شيء آخر فعلي استعمال حرف التحكم منفصل عن تدوين علامة الإقحام. - Jon Hanna
واحد قديم ... لا أستطيع تذكر الرمز الأصلي ، ولكن ctrl-G يرن جرس! - Brian Drummond
OlivierDulac لا ، ^ م هو بالضبط عودة الإقلاع ، تماما مثل ^ J هو بالضبط تغذية الخط. في حين أن أنظمة التشغيل المختلفة لديها وجهات نظر مختلفة حول ما إذا كانت تغذية الخط و / أو الإرجاع أو أي شيء آخر (مثل حرف الخط الجديد المستخدم من قبل بعض رموز IBM ولكن ليس جزء من ASCII ، وبالتالي ليس جزءًا من التراث التاريخي لبعض أنظمة التشغيل الأخرى) يجب تمثل خطًا جديدًا في ملف نصي ، وبينما تجاوزت بعض البرامج بطرق مختلفة ، لا يزال U + 000D نفسه عبارة عن حرف إرجاع ، أيًا كانت أنظمة التشغيل اللاحقة مثل Unix أو DOS قررت أن تفعل ذلك. (بالطبع ، يطلق عليه ... - Jon Hanna
OlivierDulac ... U + 000D هو proleptic ، لأن هذا الاسم جاء مع Unicode في 1990s ، ولكن هذا يشير بالتأكيد إلى رمز كما هو موجود في ASCII في عام 1963 ، ANF من خلال ذلك لأنها موجودة في كود Baudot تعديل موراي في عام 1901 كان موراي يحل المشاكل المتعلقة بنقل الورق ، باستخدام نفس الأدوات المستخدمة في مفهوم "الملف النصي" بعد عدة عقود. مطرقة المسمار في شيء مثل مسمار ، وما زال المسمار. استخدم LF و / أو CR لتمثيل نهاية السطر في ملف نصي ، ولا تزال تغذي السطر والعودة. - Jon Hanna


الأجوبة:


أعتقد أن ما يسميه OP بالفعل هو المطلوب تدوين علامة الإقحام.

تدوين Caret هو تدوين أحرف تحكم unprintable في ترميز ASCII. يتكون الترميز من علامة إقحام (^) متبوعة بحرف كبير ؛ يرمز هذا digraph للشفرة ASCII التي تحتوي على قيمة رقمية مساوية للقيمة الرقمية للحرف. على سبيل المثال يتم تمثيل الحرف EOT مع قيمة 4 كـ ^ D لأن D الحرف الرابع في الأبجدية. يتم تمثيل الحرف NUL بقيمة 0 كـ ^ @ (@ هو الحرف ASCII قبل A). عادة يتم تمثيل الحرف DEL بالقيمة 127 كـ ^؟ ، لأن ASCII '؟ قبل '@' و -1 هو نفس 127 إذا كان مقنعًا إلى 7 بتات. الصيغة البديلة للترجمة هي أن الحرف المطبوع يتم العثور عليه عن طريق عكس الجزء السابع من شفرة ASCII

يمكن العثور على القائمة الكاملة لأحرف التحكم ASCII جنبا إلى جنب مع تدوين علامة الإقحام هنا

فيما يتعلق vim وغيره من برامج تحرير النصوص: سترى فقط ^ M إذا قمت بفتح ملف نصي بتنسيق Windows (CRLF) في محرر يتوقع انتهاء نهايات لينكس (LF). يتم تقديم 0x0A كـ فاصل أسطر ، 0x0D اليمين قبل أن تطبع كـ ^ M. في معظم الأحيان ، تتضمن الإعدادات الافتراضية للمحرر "التعرف التلقائي على نهايات الأسطر".


114
2018-06-05 09:12



كنت دائما أتساءل ما الذي يسمى هذا الشيء ... - smci
تعود هذه الاتفاقية إلى السبعينيات على الأقل ؛ رأيتها لأول مرة في نظام التشغيل TOPS-10 ولكن ربما كانت موجودة في وقت سابق. على ما يستحق ، على المحطات القديمة ASCII ، فإن الحرف الذي يظهر الآن على شكل علامة إقحام هو في الواقع سهم يشير إلى الأعلى ، لذلك نشأ هذا كـ "تدوين العتبة". - keshlam
يتم تضمين هذا في تصميم ASCII بحيث يبدل مفتاح Ctrl بت 7 فقط. - OrangeDog
لا يستخدم فقط مع الحروف. لن أعرِّفها كحرف تحكم مع "القيمة الرقمية للحرف" بل بالأحرى "xor 64". بعبارات أخرى، ^A هو 0x41 xor 0x40أو 0x01 و ^? هو 0x3F xor 0x40أو 0x7F. - R..
Ascii DEL (^؟) لا علاقة له بمفتاح الحذف. انها في الواقع رمز القياسية التي تم إنشاؤها بواسطة <--- مفتاح (أيضا ، يبعث على الارتباك ، ودعا backspace) على المحطات VT100 تشبه. - R..


هذا هو بالضبط السبب.

تعرف ASCII الأحرف من 0 إلى 31 على أنها رموز تحكم غير قابلة للطباعة. هنا مقتطف من ascii(7) صفحة دليل من نظام لينكس عشوائي (man ascii) ، بما في ذلك CR (13):

   Oct   Dec   Hex   Char                       
   ─────────────────────────────────────────────
   000   0     00    NUL '\0'                    
   001   1     01    SOH (start of heading)     
   002   2     02    STX (start of text)         
   003   3     03    ETX (end of text)           
   004   4     04    EOT (end of transmission)   
   005   5     05    ENQ (enquiry)               
   006   6     06    ACK (acknowledge)           
   007   7     07    BEL '\a' (bell)             
   010   8     08    BS  '\b' (backspace)       
   011   9     09    HT  '\t' (horizontal tab)  
   012   10    0A    LF  '\n' (new line)        
   013   11    0B    VT  '\v' (vertical tab)    
   014   12    0C    FF  '\f' (form feed)       
   015   13    0D    CR  '\r' (carriage ret)    

بشكل تقليدي يتم إنشاء هذه الأحرف مع مراقبة والرسالة المتعلقة بالشخصية المطلوبة. كان Teletypes ولوحات المفاتيح الطرفية في وقت مبكر "BELL" مكتوب فوق G مفتاح لهذا السبب.

وثيقة المعايير التي تحدد ASCII هي ASA X3.4-1963والذي نشرته رابطة المعايير الأمريكية في عام 1963. لا أستطيع العثور على المستند الأصلي على موقع الويب الخاص بهم ، ولكن هذا المقتطف من الوثيقة الأصلية يعرض جدول الأحرف ، بما في ذلك رموز التحكم أعلاه.


22
2018-06-05 08:38



شكرا لكم. على الرغم من المعلومات ، لا تحتوي هذه الإجابة على إجابة السؤال. - dotancohen
الجواب مخفي في الفقرة الثانية: ^M هو اختزال للتحكم M. على المحطة الطرفية ، يمكنك الضغط على مفتاح Control مع المفتاح M لإرسال الكود ASCII 0x0D والمعروف أيضًا بالعودة. - Martin Liversage


ويعود هذا الترميز إلى أقرب أنواعًا من نماذج ASCII (ca 1963). كان هناك مفتاح CTRL يشغل بت 0x40 بحيث يكون CTRL-M (حرف الإرجاع) 0D بدلاً من 4D ، سيكون CTRL-G (الجرس) 07 بدلاً من 47 ، CTRL-L (تغذية النموذج) سيكون 0C بدلاً من ذلك من 4C.

لم يكن هناك "تصميم" في تعيين أحرف معينة لوظائف معينة ، فقد كان مجرد فرصة ، عندما استقر الغبار من تعيين رموز ASCII ، كان المفتاح M مختلفًا بعض الشيء عن إرجاع النقل ، وبالتالي أصبح إرجاع الحرف CTRL-M.

إليك أفضل لقطة يمكنني العثور عليها من لوحة مفاتيح ASR33. كما ترى ، تتم طباعة أحرف أحرف التحكم بأحرف صغيرة على مفاتيح ألفا المقابلة.

Teletype Model 33 ASR with paper tape punch/reader

صورة بواسطة Marcin Wichary ، المستخدم: AlanM1 (مشتقة (اقتصاص) من الملف: ASR-33 2.jpg) [CC BY 2.0] ، عبر ويكيميديا ​​كومنز

لا يحتوي مفتاح M على تدوين لأنه يوجد مفتاح مخصص "RETURN" ، لذا فإن CTRL-M زائدة عن الحاجة.


13
2018-06-06 22:01



على مستوى ما ، لا يزال المدى الذي لا نزال ملزمين به من قبل خيارات التصميم التي تبدو الآن وكأنها أنظمة قديمة أمرًا مثيرًا للدهشة - أعتقد أن التفكير هو (أ) ليس هذا منذ فترة طويلة ، بل مجرد أن وتيرة التغيير في الفترة الانتقالية وقد كان ذلك مدهشا ، و (ب) إذا تم اتخاذ قرارات تصميمية كافية ، فإن بعضها (خاصة تلك التي لا تسبب مشاكل الناس الكافية) لا بد أن يستمر لفترة طويلة بعد أن تختفي أسبابها في الذاكرة. لا يزال هناك شعور غريب للنظر إلى تاريخ بعض هذه الأشياء على الرغم من. - Stuart Golodetz
StuartGolodetz - في الواقع ، أجد ذلك مطمئنا بشكل غريب. ولكن بعد ذلك أتذكر عندما كانت Teletypes "التكنولوجيا المتقدمة". (بالمناسبة ، كان طراز Teletype ASR-33 رائعًا نظرًا لبساطته الأنيقة. ولا أريد سوى أن تكون أنظمة الكمبيوتر "الحديثة" جيدة التصميم). - Daniel R Hicks
هذا أمر رائع ولكن ما لا أفهمه هو .. لماذا قرروا أن هذه الآلة الكاتبة بحاجة إلى جرس؟ - CaptainCodeman
CaptainCodeman - عندما تقوم بنقل رسالة مهمة ، فأنت قرع الجرس للحصول على انتباه المشغل على الطرف الآخر. - Daniel R Hicks
من المثير للاهتمام ملاحظة أن مفتاح Ctrl يظل قائماً حتى يومنا هذا على لوحات مفاتيح الكمبيوتر الشخصي. - Daniel R Hicks


حرف الإقحام (^) هو اختصار فقط للكتابة اضغط باستمرار على مفتاح التحكم - CTRL أسفل.

في الأيام القديمة الجيدة ، يمكنك كتابة هذه الرموز (انظر أعلاه) مباشرةً ، وسيؤدي المفتاح Ctrl + G (^ G) إلى تشغيل المحطة الطرفية "ding"

عندما تريد إضافة CR في Vim تستخدم مفتاح Ctrl + M إلخ tab = Ctrl + I


2
2018-06-06 14:32



المصطلح الذي تبحث عنه هو الدوغراف حرفان يمثلا ن صوتا مفردا، مما يعني حرفين يمثلان حرفًا واحدًا. على وجه التحديد ، يتم استخدام digraphs و trigraphs لتمثيل الأحرف غير القابلة للطباعة. ومن الناحية التاريخية ، تم استخدام هذه الأحرف أيضًا للأحرف التي لا تظهر على لوحة المفاتيح ، على الرغم من أن هذا الأمر لا يمثل مشكلة في استخدام واجهة المستخدم الرسومية ولوحات المفاتيح الحديثة.
"في الأيام الخوالي" لا يزال اليوم ، مع ^ C و ^ D يجري وظيفية تماما. السبب الوحيد الذي يجعل ^ G لا يجعل من الإقلاع النهائي هو أن معظم المحاكيات الطرفية قد توقف هذا الرد. - SevenSidedDie


الحاجة إلى بعض الطريقة المرئية لعرض الأحرف غير القابلة للطباعة حسب التعريف.

لذلك ، شخص ما في أوائل 1970s (أو ربما في وقت سابق) (أتذكر رؤيتها على CP / M ، وشخص آخر قد ذكر بالفعل TOPS) قررت أن "حرف الإقحام زائد" سيكون رمزا لحروف تحكم ASCII 26 غير قابلة للطباعة مع القيم من 1 إلى 26. تمت طباعة القيمة 0 كـ ^ @ وقيمة 127 كـ ^ ؟.


2
2018-06-09 00:51





أين يتم توثيقها ، تسرد هذه الصفحة كل حرف تحكم ، مع كيفية إدخال / تمثيلها مع مفتاح التحكم (على الرغم من أن أول واحد ، حرف 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 ، وكمستخدم techie تستخدمه عند القيام 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


1
2018-06-05 18:25



معظم أحرف التحكم لا معنى لها ، ولكن حتى بعض هؤلاء الذين لديهم معنى مثل Ctrl-I لست متأكداً من أين يمكنك أن تفعل Ctrl-I واحصل على علامة تبويب. - barlop
لا شيء من أحرف التحكم لا معنى له. كثير منها غير مستخدم في سياقات كثيرة ، ولكن لكل واحد منها معنى واحد على الأقل. - Jon Hanna
JonHanna بالطبع أنا لا أقصد أنها كانت بلا معنى (الزمن الماضي). لكن R.Have كان بلا معنى لعقود ، بمعنى أنه كان لديهم معانيهم الأصلية من الدهور ، والتكنولوجيا التي لم تعد تدير ، هي (معظم الأحرف) لا معنى لها اليوم ث / الحالية وحتى التكنولوجيا القديمة قليلا. إن وجدت أي يتم استخدامها في الاستخدامات الحديثة انها ليست كثيرة. هناك قائمة هنا en.wikipedia.org/wiki/Control_character  من تلك الاستخدام الشائع 0،7،8،9،10،11،12،13،127. 9/33 بحيث يكون الآخرون (24 منهم) إما نادرًا جدًا أو لا يحصلون على الإطلاق نظرًا لأنهم لا يزالون غير قادرين على استخدام عقود الآلات المستخدمة في - barlop
ما زالت Associated Press تستخدم ANPA-1312 التي تستخدم 1-4 ، 6 و 16 تستخدم لبدء كل اتصال TCP / IP. لا تزال الطابعات الحديثة (بين الأعمدة الأخرى) تستخدم 17 و 19. بالإضافة إلى تلك التي ذكرتها ، فنحن نغطي نسبة كبيرة منهم دون أن نحاول. سأمنحك أنهم ليسوا في ثقيل استخدام ، لكنها ليست ميتة سواء. - Jon Hanna
barlop يمكنك القيام به ^I لعلامة تبويب في bash القياسي: type ls ~/^I^I وسترى جميع المجلدات في دليل منزلك. - wchargin


يمكنك رؤية كل حروف ASCII غير القابلة للزيادة مراقبة تخطيط في هذه الطاولة.


0
2018-06-05 08:46



في حين أن هذا قد يكون من الناحية النظرية الإجابة على السؤال ، سيكون من الأفضل لتشمل الأجزاء الأساسية من الإجابة هنا ، وتوفير الرابط كمرجع. بهذه الطريقة ، إذا تغيرت الصفحة المرتبطة أو أصبحت غير صالحة لأي سبب من الأسباب ، فستظل الإجابة مفيدة لزوار Super User. - α CVn
شكرا لكم. على الرغم من المعلومات ، لا تحتوي هذه الإجابة على إجابة السؤال. - dotancohen