emacs एकाधिक आदेशों के लिए एमाकस कुंजी बाध्यकारी




elisp key-bindings (4)

आप अपने फ़ंक्शन को परिभाषित कर सकते हैं जो दो कार्यों को कॉल करता है, और अपने स्वयं के फ़ंक्शन के लिए कुंजी बाँधता है। या साधारण लैम्ब्डा का उपयोग करें:

(global-set-key (kbd "C-c a b c") (lambda () (interactive) (some-command) (some-other-command)))

मैं emacs के लिए नया हूँ, और एक धोखेबाज़ सवाल है मैं किसी विशेष फ़ंक्शन के लिए एक कुंजी (global-set-key (kbd "Cc abc") 'some-command) बाँध सकता हूं, जहां some-command एक फ़ंक्शन है I मैं एक कुंजी बाइंडिंग के साथ दो कार्यों ( some-command और some-other-command ) कहां कह सकता हूं? आपका बहुत बहुत धन्यवाद!


आप एक दूसरे फ़ंक्शन को परिभाषित कर सकते हैं जिसमें आप दूसरों को मस्तिष्क के साथ defun या ऐसा apply करते हैं, जब आप इस तीसरे फ़ंक्शन को कॉल करते हैं (जो आप भी बाँध सकते हैं) तो यह अन्य लोगों को आमंत्रित करेगा।


एक कमान परिभाषित करें जो आप चाहते हैं कि प्रत्येक फ़ंक्शन (कमांड) को कॉल करता है, सशर्त रूप से कॉल करने के लिए अलग करने के लिए उपसर्ग एआरजी का उपयोग करें इसलिए यदि नया, प्रेषण आदेश को बाध्य है, कहते हैं, Co , फिर Cu Co किसी एक कार्य को कहती है और Co (एक उपसर्ग एजी के बिना) दूसरे को कॉल करेगी

आप Ch f interactive करना चाहते हैं, यह देखने के लिए कि एक कमांड जो एक उपसर्ग तर्क आदि को पहचानता है को परिभाषित करना है। एलिसप मैनुअल से भी परामर्श करें - i interactive का उपयोग करने के लिए इसे कहां सिखाता i interactive

यह एक आसान और मजेदार व्यायाम है अपनी खुद की सरल आज्ञाओं को परिभाषित करने के लिए सीखना इमेक्स से अपनी भाषा में बात करना शुरू करना एक अच्छा तरीका है।


मैं कभी भी लैम्ब्डा अभिव्यक्ति को बाध्य करने की सलाह नहीं देता है, क्योंकि साधारण कारण यह है कि जब आप एमएसीएस से पूछें कि वह क्या करता है, तो यह आपको कुछ ऐसा बता देगा (स्वीकार्य कोड का उपयोग करने के लिए, जब बाइट-संकलित किया गया, उदाहरण के रूप में):

C-c a b c runs the command #[nil "\300 \210\301 \207" [some-command
some-other-command] 1 nil nil], which is an interactive compiled Lisp
function.

It is bound to C-c a b c.

(anonymous)

Not documented.

यदि आप अपना कोड कभी बाइट-कंपाइल नहीं करते हैं, तो यह कम गुप्त है, लेकिन अभी भी स्वरूपित नहीं है:

C-c a b c runs the command (lambda nil (interactive) (some-command)
(some-other-command)), which is an interactive Lisp function.

कौन सा, जबकि इस तरह के एक छोटे से समारोह के मामले में अभी भी पठनीय है, बड़े कार्यों के लिए तेजी से समझ से बाहर हो जाता है।

के साथ तुलना:

C-c a b c runs the command my-run-some-commands, which is an
interactive compiled Lisp function in `foo.el'.

It is bound to C-c a b c.

(my-run-some-commands)

Run `some-command' and `some-other-command' in sequence.

जो आप प्राप्त करते हैं, यदि आप फ़ंक्शन का नाम देते हैं (जो आपको किसी अनाम फ़ंक्शन से अधिक दस्तावेज़ करने के लिए प्रोत्साहित करता है)।

(defun my-run-some-commands ()
  "Run `some-command' and `some-other-command' in sequence."
  (interactive)
  (some-command)
  (some-other-command))

(global-set-key (kbd "C-c a b c") 'my-run-some-commands)

अंत में, जैसा abo-abo बताते हैं, इसका यह भी अर्थ है कि आप किसी भी समय उस फ़ंक्शन की परिभाषा आसानी से देख सकते हैं, कोड को देखने या संपादित करने / पुनः मूल्यांकन करने के लिए, या तो सहायता बफर में दिए गए लिंक का पालन करके ( foo.el मेरे उदाहरण में), या एमएक्स find-function ( find-function का नाम दर्ज करें) का उपयोग करके, या Mx find-function-on-key (कुंजी अनुक्रम टाइप करें, जो इसे करने के लिए बाध्य है)।





key-bindings