जैसे किसी पंक्ति के अंत में कूदना Ctrl+ है E, जहां Eअंत के रूप में सोचा जा सकता है, यह प्रयोग शुरू करने के लिए क्यों कूदता है A?
emacs
(और bash
साथ ही) आप पंक्ति के आरंभ / अंत में भी डिफ़ॉल्ट रूप से Home
/ End
कुंजियों के साथ कूद सकते हैं ।
जैसे किसी पंक्ति के अंत में कूदना Ctrl+ है E, जहां Eअंत के रूप में सोचा जा सकता है, यह प्रयोग शुरू करने के लिए क्यों कूदता है A?
emacs
(और bash
साथ ही) आप पंक्ति के आरंभ / अंत में भी डिफ़ॉल्ट रूप से Home
/ End
कुंजियों के साथ कूद सकते हैं ।
जवाबों:
प्रश्न के दो पक्ष हैं, तकनीकी पक्ष और ऐतिहासिक पक्ष।
तकनीकी उत्तर है क्योंकि GNU Readlinebash
का उपयोग करता है । में नियंत्रण-एक समारोह के लिए बाध्य है , आप के साथ इस दिखा सकते हैं:readline
beginning-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 पसंद है ।
Ctrl+ aEmacs में लाइन की शुरुआत के लिए कूद रहा है, और libreadline Emacs के समान कुंजी बाइंडिंग का उपयोग करता है। बैश कामेच्छा का उपयोग करता है।
set -o vi
, या echo 'set editing-mode vi' >> ~/.inputrc
, विम कीबाइंडिंग प्राप्त करने के लिए!
पत्र "ए" चुना गया था क्योंकि नियंत्रण + बी और नियंत्रण + एस पहले से ही लिया गया था, इसलिए उन्होंने फैसला किया कि चूंकि ए लैटिन वर्णमाला का पहला पत्र था, जो कि उनका उपयोग किया जाएगा। मुझे कैसे पता चलेगा? क्योंकि मुझे इसका जवाब आज TECO (EMACS के पूर्ववर्ती) और EMACS के डेवलपर्स में से एक से मिला।