2009-05-27 11 views
32

मैं Emacs में Ctrl + TAB के लिए एक कुंजी बाध्यकारी सेट करने का प्रयास कर रहा हूं।Emacs वैश्विक-सेट-कुंजी सी-टैब

(global-set-key (read-kbd-macro "C-TAB") 'my-func) 

बहरहाल, जब भी मैं इसे का उपयोग करें, मैं एक

<C-tab> is undefined 

त्रुटि संदेश मिलता है: मैं निम्नलिखित कॉल का इस्तेमाल किया। एक त्रुटि संदेश में "सी-टैब" परिणामों को बाध्यकारी सेट करने का प्रयास कर रहा है।

मैं अपने बाध्यकारी को सी-टैब में कैसे सेट कर सकता हूं?

उत्तर

37
(global-set-key [C-tab] 'my-func) 
+0

धन्यवाद [] वाक्यविन्यास था जहां मैं गलत गया –

3

read-kbd-macro का उपयोग करने के बजाय, अधिक सादा सिंटैक्स का उपयोग करने का प्रयास करें?

;(global-set-key [(control tab)] 'my-func) 

शायद सादा सिंटैक्स एक फर्क पड़ेगा?

read-kbd-macro और global-set-key पर अधिक।

+1

का उपयोग करने का बड़ा लाभ '(kbd)' है कि आप एक ही वाक्य विन्यास का उपयोग कर सकते हैं कि Emacs रिटर्न जब आप 'वर्णन-कुंजी' कहते हैं, जो इसे निपटने के लिए पूरी तरह से तुच्छ बनाता है (जैसा कि ट्रे के उत्तर द्वारा अच्छी तरह प्रदर्शित किया गया है)। – phils

11

ऐसा इसलिए है क्योंकि आप read-kbd-macro गलत तरीके से उपयोग कर रहे हैं। जब आप देखते हैं कि क्या एक प्रमुख के लिए बाध्य है:

C-h k C-TAB 

Emacs आपको बताता है:

<C-tab> is undefined. 

आप read-kbd-macro के अपने मंगलाचरण में < शामिल करने के लिए> की जरूरत है।

(global-set-key (read-kbd-macro "<C-tab>") 'my-func) 

और, मैं कैसे <C-TAB> उत्पन्न करने के लिए पता नहीं है, लेकिन यह <C-tab> के रूप में ही नहीं है।

(equal (kbd "<C-TAB>") (kbd "<C-tab>")) 
-> 
nil 
45

विपरीत दूसरों का सुझाव दिया है, यह मामले में आप कभी भी Emacs के अन्य संस्करणों में एक ही विन्यास फाइल का उपयोग करना चाहते हैं (जो मूल रूप से एक ही बात है या read-kbd-macro) एक अच्छा विचार kbd उपयोग करने के लिए है, kbd Emacs और XEmacs के कई संस्करणों में काम करता है, जहां मुख्य अनुक्रमों का आंतरिक प्रतिनिधित्व अलग-अलग होता है।

  • विशेष शब्द आरईटी, छठे वेतन आयोग, टैब, डेल, LFD, ESC, और NUL प्रतिनिधित्व विशेष:

    (global-set-key (kbd "<C-tab>") 'my-func) 
    

    इनपुट read-kbd-macro द्वारा इस्तेमाल किया प्रारूप edmacro-mode की docstring में प्रलेखित है नियंत्रण अक्षर शब्द अपरकेस में लिखा जाना चाहिए।

  • कोण कोष्ठक में एक शब्द, उदाहरण के लिए, < वापसी>, < नीचे>, या < f1>, एक समारोह कुंजी का प्रतिनिधित्व करता है। (ध्यान दें कि मानक विन्यास में, फ़ंक्शन कुंजी < वापसी> और नियंत्रण कुंजी आरईटी समानार्थी है।) आप आरईटी, एसपीसी, आदि शब्दों पर कोण ब्रैकेट का उपयोग कर सकते हैं, लेकिन की आवश्यकता नहीं है।

यह कुछ हद तक दुर्भाग्य से लिखा है; पहले बुलेट बिंदु में संदर्भित टैब टीएबी के लिए एएससीआईआईआई चरित्र है, और नियंत्रण संशोधक जोड़ना इसके लिए कुछ गैरकानूनी है। जब आप कंट्रोल-टैब दबाते हैं, तो Emacs इसे (आपके विंडोिंग सिस्टम के माध्यम से; यह टेक्स्ट टर्मिनल में काम नहीं करेगा) <tab> के रूप में एक नियंत्रण संशोधक के साथ, जिसे आप C-<tab> या <C-tab> के रूप में प्रस्तुत कर सकते हैं।

+0

क्या टेक्स्ट टर्मिनल में emacs में ' 'के लिए कोई कामकाज है? मैंने serverfault पर पूछा: http://serverfault.com/questions/81688/problem-with-ctrl-tab-keybinding-in-emacs-in-gnome-terminal – Tom

+0

kbd का क्या अर्थ है? धन्यवाद – why

+0

केबीडी एक मैक्रो है जो http://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Sequences.html पर प्रलेखित है और कार्यों द्वारा समझा जाने वाले मूल्यों के लिए Emacs दस्तावेज़ में उपयोग किए गए कीबाइंडिंग प्रारूप को परिवर्तित करने के लिए उपयोग किया जाता है जैसे वैश्विक-सेट-कुंजी। –

6

ध्यान दें कि आप global-set-key पर भी बातचीत कर सकते हैं। इसके बाद आप repeat-complex-command साथ सही बाध्यकारी आदेश देख सकते हैं (यह भी KeybindingGuide देखें):

  1. M-x: global-set-key
  2. प्रकार कुंजी संयोजन आप
  3. उपयोग C-x ESC ESC (repeat-complex-command) चाहते apropiate आदेश को देखने के लिए। आपके मामले में मैं:

    (global-set-key (quote [C-tab]) (quote my-func)) 
    
0

gnu Emacs में तुतलाना संदर्भ मैनुअल, खंड 21.1 "कुंजी दृश्यों", वे \ t का उपयोग कर संदर्भ टैब कुंजी का प्रतिनिधित्व करने के लिए।

वाक्य रचना लिस्प संदर्भ मैनुअल में दिखाया गया है का उपयोग करना, मैं निम्न आदेश का उपयोग होगा:

(global-set-key (kbd "C-\t") 'my-func)