शॉर्टकट Ctrl + A टर्मिनल में एक लाइन के शुरू होने के लिए क्यों कूद रहा है?


11

जैसे किसी पंक्ति के अंत में कूदना Ctrl+ है E, जहां Eअंत के रूप में सोचा जा सकता है, यह प्रयोग शुरू करने के लिए क्यों कूदता है A?


1
आप "अनफैंग" के लिए "ए" के बारे में सोच सकते हैं
एंथन

या "ए" अल्फ़ाबेट में पहला पत्र है
कोस्टास

कृपया ध्यान दें कि emacs(और bashसाथ ही) आप पंक्ति के आरंभ / अंत में भी डिफ़ॉल्ट रूप से Home/ Endकुंजियों के साथ कूद सकते हैं ।
जिमीज १ij

जवाबों:


20

प्रश्न के दो पक्ष हैं, तकनीकी पक्ष और ऐतिहासिक पक्ष।

तकनीकी उत्तर है क्योंकि GNU Readlinebash का उपयोग करता है । में नियंत्रण-एक समारोह के लिए बाध्य है , आप के साथ इस दिखा सकते हैं:readlinebeginning-of-line

$ bind -q beginning-of-line
beginning-of-line can be invoked via "\C-a", "\M-OH", "\M-[1~", "\M-[7~", "\M-[H".

जहां \C-a"कंट्रोल-ए" का अर्थ है। bind -pसभी बाइंडिंग दिखाएंगे (सावधान रहें bind, यदि आप गलती से अतिरिक्त विकल्प या तर्क प्रदान करते हैं तो अपने कीबोर्ड को तोड़ना आसान है)।

उपर्युक्त बाइंडिंग में से कुछ डिफ़ॉल्ट रूप से जोड़े गए हैं, अन्य जिन्हें .inputrcमैंने अपने द्वारा उपयोग किए गए विभिन्न टर्मिनलों के लिए (के माध्यम से ) जोड़ा है। बैश-2.0 के बाद से, टर्मिनल termcap क्षमताओं शामिल है kh, और kHतो Homeऔर Endपर सेट हो जाएगा beginning-of-lineऔर end-of-line। दोनों bashऔर चेत रमी , एक Emacs उपयोगकर्ता और एक Emacs क्लोन के readlineडेवलपर द्वारा विकसित किए गए हैं ।ce


(कृपया ध्यान दें, यह प्रयास कई दशकों पहले के कई वर्षों के इतिहास को संक्षेप में प्रस्तुत करता है, और कुछ विवरणों पर निर्भर करता है)

अब, यह विशेष रूप से नियंत्रण-में क्यों है? रीडलाइन डिफ़ॉल्ट इमैक -जैसे बाइंडिंग द्वारा उपयोग करती है । GNU Emacs में कंट्रोल-इन इनवोक करता है move-beginning-of-line, जिसे हम अब "होम" फंक्शन मानते हैं।

स्टेलमैन और स्टील का मूल EMACS फ्रेड राइट के संपादक (एक शुरुआती WYSIWYG संपादक) और TECO (एक गुप्त मोडल संपादक / भाषा) से प्रेरित था - EMACS TECO के लिए मैक्रोज़ का एक सेट था । देखें आवश्यक ई [PDF] (से सेल , 1980)। हालांकि ई ने "लाइन की शुरुआत" के लिए कंट्रोल-फॉर्म का इस्तेमाल किया, यह "डेटाडिस्क" कीबोर्ड पर था जिसमें एक Controlकुंजी और एक Formकुंजी थी। उस समय का स्पेस-कैडेट कीबोर्ड ( Homeरास्ते में एक चाबी की कमी होती है , हालांकि यह एक था End) आमतौर पर Emacs कीबोर्ड इंटरफ़ेस के लिए दोषी ठहराया जाता है।

EMACS की वांछनीय विशेषताओं में से एक इसका उपयोग TECO के कंट्रोल-आर "रियल-टाइम" लाइन एडिटिंग मोड (TECO प्रीडेट CRT / कीबोर्ड टर्मिनल्स) का उपयोग था, आप MIS AI लैब 1978 के पेज 6 पर प्रमुख बाइंडिंग देख सकते हैं ITS परिचय EMACS संपादक [स्कैन की गई पीडीएफ], जहां used का उपयोग नियंत्रण को निरूपित करने के लिए किया जाता है। इस मोड में, कुंजी बाइंडिंग सभी नियंत्रण अनुक्रम थे, मोटे तौर पर mnemonic: इस लाइन का नियंत्रण-ई अंत , नियंत्रण-पी पिछली रेखा पर , नियंत्रण-एन अगली पंक्ति में , नियंत्रण-बी पिछड़े एक वर्ण , और कम से कम नियंत्रण नहीं -इस पंक्ति की शुरुआत में , इसके लिए "वर्णमाला के पहले अक्षर" कोस्टास का सुझाव उतना ही अच्छा है।

(इसी तरह की-बाइंडिंग tvlibमैक्रो पैकेज में है, जिसका उद्देश्य EMACS को TVEDIT एडिटर की तरह व्यवहार करना है, A और E को बैकवर्ड और फॉरवर्ड वाक्य को बाइंड करना है , लेकिन लाइन की शुरुआत और अंत के लिए अलग-अलग सीक्वेंस का उपयोग किया है।)

"^ आर मोड" में नियंत्रण-ए / नियंत्रण ई बाइंडिंग सीधे अपने TECO में लागू किया गया (1983, संस्करण 1208, देखने _teco_.tgzमें संग्रह nocrew PDP10 / इसके साइट, या पर Github ,) हालांकि मैं और अधिक सही निर्धारित नहीं कर सकता जब वे पहली बार दिखाई दिए, और टीईसीओ स्रोत यह नहीं बताता है कि किसी विशेष बाइंडिंग को क्यों चुना गया है। 1978 MIT EMACS से ऊपर के दस्तावेज़ का अर्थ है कि 1978 में EMACS ने TECO देशी नियंत्रण-ए / नियंत्रण-ई का उपयोग नहीं किया, यह संभव है कि scrlinमैक्रो पैकेज (स्क्रीन लाइन) ने इन्हें लागू किया हो।

संक्षेप में दुहराना:

  • बैश रीडलाइन का उपयोग करता है
  • रीडलाइन कुंजी बाइंडिंग Emacs / EMACS का अनुसरण करती है
  • मूल EMACS को TECO के साथ बनाया गया था, जो कई विशेषताओं को विरासत में मिला
  • टीईसीओ के इंटरेक्टिव मोड मैक्रो का उपयोग किया गया (ज्यादातर) एमनेमिक कंट्रोल कुंजी बाइंडिंग, और "लाइन ऑफ स्टार्ट" को कंट्रोल-ए को सौंपा गया।

यह सभी देखें:


6

क्योंकि रिचर्ड स्टेलमैन को Emacs पसंद है

Ctrl+ aEmacs में लाइन की शुरुआत के लिए कूद रहा है, और libreadline Emacs के समान कुंजी बाइंडिंग का उपयोग करता है। बैश कामेच्छा का उपयोग करता है।


2
ध्यान दें कि आप कर सकते हैं set -o vi, या echo 'set editing-mode vi' >> ~/.inputrc, विम कीबाइंडिंग प्राप्त करने के लिए!
वचगिन

लोग इस उत्तर बिंदु को क्यों दे रहे हैं? सवाल यह था कि ctrl + a को लाइन की शुरुआत में जाने के लिए कमांड के रूप में क्यों चुना गया था, न कि कमांड क्या है।
प्रातः

@ उत्तर पहले वाक्य में है, "गन्नू का इतिहास" देखें।
जैसन

4
क्षमा करें, लेकिन क्योंकि रिचर्ड स्टालमैन Emacs को पसंद करते हैं। मुझे यह नहीं बताता कि ctrl- मुझे लाइन की शुरुआत में क्यों ले जाता है। क्यों नहीं ctrl-s, या ctrl-x, या जो भी हो ?!
वार्टल

0

पत्र "ए" चुना गया था क्योंकि नियंत्रण + बी और नियंत्रण + एस पहले से ही लिया गया था, इसलिए उन्होंने फैसला किया कि चूंकि ए लैटिन वर्णमाला का पहला पत्र था, जो कि उनका उपयोग किया जाएगा। मुझे कैसे पता चलेगा? क्योंकि मुझे इसका जवाब आज TECO (EMACS के पूर्ववर्ती) और EMACS के डेवलपर्स में से एक से मिला।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.