सी को कैसे बांधें- [वास्तविक के लिए (गंभीरता से वास्तविक समय के लिए)


11

क्या किसी C-[चीज को बांधने का कोई तरीका है और सभी M-(मेटा) बाइंडिंग में गड़बड़ नहीं है?

पहली बार नहीं जब यह सवाल सामने आया। दुर्भाग्य से, पिछले धागे में दिए गए एकमात्र समाधान एक है) लिनक्स विशिष्ट, बी) को बाहरी उपकरण (फिर से लिनक्स विशिष्ट) की आवश्यकता होती है , जिसका एमएसीएस से कोई लेना-देना नहीं है। एक ही नस में मैं कभी भी इसे पाने के लिए एक OS X पर Karabiner जैसी चीज का इस्तेमाल कर सकता था ताकि C-[पहले Emacs मिल जाए लेकिन यह क्लूनी और महंगा है।

यह देखते हुए कि यह Emacs कि अनुवाद करने पर जोर देता है C-[करने के लिए ESC, C-iकरने के लिए TABऔर शायद दूसरों मैं करूंगा बहुत ज्यादा इन रिश्तों को तोड़ने और कीमती कुंजी दृश्यों वापस पाने के लिए की तरह। हाल ही में मैंने इस समस्या में पूरी गति से दौड़ लगाई और शांत निर्दोष स्मार्टपैरेन्स मोड को दोषी ठहराया

एक संभावित समाधान जो इसमें शामिल था function-key-mapऔर यहां चर्चा की गईkey-translation-map थी, लेकिन अफसोस कि यह या तो अब काम नहीं करता है या पहली जगह में काम नहीं करता है (या मैं कुछ गलत कर रहा हूं)। मुझे लगता है कि यह सही दिशा में जा रहा था।


3
Emacs "अनुवाद C-[करने के लिए ESC" पर जोर नहीं देता है । दोनों एक ही चीज हैं । इसी तरह, C-iऔर TABएक ही ASCII नियंत्रण कोड के लिए अलग-अलग नाम हैं ।
ड्रू

2
@ ड्रू यह कम से कम स्पष्ट नहीं है कि नियंत्रण के साथ महत्वपूर्ण संयोजन एएसयूआईआई नियंत्रण कोड (जिनमें से केवल 32 हैं) में जीयूआई अनुप्रयोग में मैप करना होगा । (या, हेक, यहां तक ​​कि xterm में, जिसमें कई मामलों में अद्वितीय भागने के क्रम भेजने के लिए एक संशोधितOtherKeys मोड है, हालांकि मैं विशेष रूप से इन के बारे में निश्चित नहीं हूं)
रैंडम 832

3
@ Random832: आप वर्णों से कुंजियों को अलग करने के लिए सही हैं । एक संपादक के लिए नियंत्रण अनुक्रम ( चरित्र उर्फ ) को मुख्य अनुक्रम (प्रेस और हिट ) को मैप करना कुछ हद तक तर्कसंगत और सीधा है , लेकिन नहीं, जो किसी संपादक को डिजाइन करने के लिए अनिवार्य नहीं है। और हाँ, Emacs ऐसा करता है। और एक ही चरित्र हैं, लेकिन चाबियाँ + और किसी भी विशेष पात्रों के लिए मैप नहीं किए जाने की आवश्यकता है। C-[Ctrl[C-[ESCC-[ESCCtrl[Esc
ड्रू

जवाबों:


8

मेरे स्वयं के विन्यास से अनुकूलित :

(define-key input-decode-map [?\C-\[] (kbd "<C-[>"))
(global-set-key (kbd "<C-[>") 'butterfly)

यह स्पष्ट रूप से केवल जीयूआई में काम करेगा।

संपादित करें: ध्यान दें कि input-decode-mapयह टर्मिनल-स्थानीय है जिसका अर्थ है कि यदि आप उपयोग कर रहे हैं तो यह काम नहीं करेगा emacsclient, लेकिन यदि आप उपयोग कर रहे हैं तो यह करेंगे emacs। मैंने अपने कॉन्फिग में इस मुद्दे को एक फ्रेम पर संचालित कमांड में लपेटकर और इसे after-make-frame-functionsहुक में जोड़कर तय किया है ।


धन्यवाद यह कानूनी प्रतीत होता है! मुझे आश्चर्य है कि क्या मेटा को और ईएससी को एक ही चीज़ के रूप में इलाज करने से Emacs को रोकने का कोई तरीका है? अगर मैं बस कुछ Emacs शब्दावली को गड़बड़ कर रहा हूं और यहां सीधे नहीं सोच रहा हूं, तो मैं सोच रहा हूं
zeRusski

1
यह एक अलग प्रश्न है, कृपया इसके लिए एक नया खोलें।
वामासा

दिलचस्प होने <C-i>और <C-[>करने के लिए बाध्य वापस TABऔर ESCवैश्विक-नक्शे पर आप अपने config फ्लैट बाहर में सुझाव है की तरह मेरे Emacs हर बार जब मैं उन्हें मारा दुर्घटनाओं
zeRusski

1
ठीक है, यह देखते हुए कि आप उस व्यक्ति के रूप में होते हैं, जिसने "j" पत्र के इनपुट पर दुर्घटनाग्रस्त होने के लिए बग में सौंप दिया है , मैं आपके एमएसीएस को दुर्घटनाग्रस्त होने के लिए दोषी ठहराता हूं और आपको ओएस एक्स के लिए एक अलग प्रयास करने का सुझाव दूंगा
वासमासा

मुझे विश्वास है कि मैंने कई निर्माण की कोशिश की थी। एक और रहस्य होगा जिसके साथ मुझे रहना होगा। मैं प्रबंधित करता हूँ -) समाधान के लिए धन्यवाद
zeRusski
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.