2013-10-11 5 views
5

मैं बाध्यकारी मैक्रो एक कस्टम कुंजी बना लिया है इस प्रकार है:Emacs Unbind एक मोड के कीबाइंडिंग

(global-set-key (kbd "C-C C-c") "\C-a\C- \C-n\M-w\C-y")

समस्या यह है कि C-c C-cpython-mode में python-send-buffer के लिए परिभाषित किया गया है है। तो मेरा मैक्रो पाइथन-मोड को छोड़कर सभी मोड के लिए काम करता है। मुझे लगता है कि python-mode का मूल्यांकन मेरी init फ़ाइल के बाद किया जाता है, इसलिए यह उस कीबाइंडिंग को ओवरराइट करता है।

मैंने C-c C-c को (eval-after-load "python-mode") का उपयोग करके और global-unset-key का उपयोग करके परेशान करने का प्रयास किया लेकिन यह काम नहीं करता है। पाइथन में C-c C-c हमेशा python-send-buffer पर मैपिंग कर रहा है।

मैं पाइथन के C-c C-c को पूरी तरह अक्षम कैसे कर सकता हूं, और इसके बजाय मेरे मैक्रो का उपयोग कैसे कर सकता हूं?

मैं Emacs 24.2.1 का उपयोग कर रहा हूं।

+0

सी सी सी सी मोड का एक बहुत के लिए परिभाषित किया गया है। शायद आपको http://stackoverflow.com/questions/683425/globally-override-key-binding-in-emacs – scottfrazer

+1

पर विचार करना चाहिए या बस एक अलग कुंजी का उपयोग करने पर विचार करना चाहिए। 'सीसी' के बाद एक नियंत्रण कुंजी (जैसे कि 'सीसी') "प्रमुख मोड के लिए आरक्षित" है, जिसका अर्थ है कि लिस्प कोड जो एक प्रमुख मोड को परिभाषित करता है, इसका उपयोग करने के हकदार है (और वे अक्सर' सीसी सीसी 'का उपयोग करते हैं, स्कॉटफ्राज़र के रूप में कहा हुआ)। उपयोगकर्ता अभी भी इस तरह की कुंजी को बाध्य करने के हकदार हैं, लेकिन केवल यह जानते हैं कि प्रमुख मोड भी ऐसा करने में स्वतंत्र महसूस करेंगे, इसलिए आपको ऐसे मोड के लिए उपयोग करने के लिए एक प्रतिस्थापन कुंजी खोजने की आवश्यकता हो सकती है (इसके लिए यहां जवाब देखें) । एलिसप मैनुअल देखें, नोड 'कुंजी बाध्यकारी सम्मेलन'। – Drew

+0

@ ड्रू मुझे एक सी-एक्स बाध्यकारी प्रतीत नहीं होता है जो कि मुफ्त और आसान है/इस कॉपी और पेस्ट करने के लिए समझ में आता है जिसे मैं अक्सर उपयोग करता हूं। – darksky

उत्तर

7
(add-hook 'python-mode-hook 
      (lambda() 
      (local-unset-key (kbd "C-c C-c")))) 
1

यह करना चाहिए:

(add-hook 'python-mode-hook 
      (lambda() 
      (define-key python-mode-map (kbd "C-c C-c") nil))) 
संबंधित मुद्दे