क्या Emacs में एक (दोहराने-अंतिम-कमांड) है?


143

अक्सर, मैं अनुरूप और डॉक्स निम्नलिखित केवल देने के लिए हाथ में कार्य करने के लिए वापस पाने के लिए की तरह कुछ के लिए देख में खोदा है:

(दोहराने-अंतिम आदेश)

अंतिम C- या M- कमांड करें जिसे मैंने अभी निष्पादित किया है (fn कुंजी के लिए रिबाउंड होना)

या कभी-कभी संबंधित:

(वर्णन-अंतिम समारोह)

क्या कीस्ट्रोके मैंने सिर्फ गलती से इश्यू किया, जिसका असर मैं अपने बैग ट्रिक्स से जोड़ना चाहूंगा। वर्णन-कुंजी करीब है, लेकिन यह जानना आवश्यक है कि मैंने क्या टाइप किया है।

मैं बस बहुत ज्यादा मेरी भरोसेमंद सहायक से पूछ रहा हूँ?


1
Cx जेड (repeat)और Cx Mz (repeat-complex-command)। यह भी देखें (repeat-matching-complex-command)
हत्शेपसुत

जवाबों:


62

'के संबंध का वर्णन-अंतिम समारोह ':

एक चर है last-commandजो आपके द्वारा किए गए अंतिम चीज़ के प्रतीक प्रतिनिधि के लिए सेट है। तो यह ठीक स्निपेट - (describe-function last-command)- उस चीज के लिए प्रलेखन को लाने के लिए चाहिए जो तुरंत हुआ।

आप एक छोटी सी काम कर कर सकता है तो describe-last-functionइसलिए की तरह

(defun describe-last-function() 
  (interactive) 
  (describe-function last-command))

उस योग्य को .emacsया बराबर में रखो , और आपके पास एक एमएक्स विवरण-अंतिम-फ़ंक्शन होगा

आप कुछ चाबी या किया कुछ ऐसा है जो बात आप रुचि रखते हैं में के बाद से अंतिम आदेश संशोधित पर टकरा गया है, command-historyसमारोह ब्याज की हो सकती है। आप इसे Mx कमांड-हिस्ट्री द्वारा प्राप्त कर सकते हैं


168

दोहराए जाने वाले कार्यक्षमता को repeat.elEmacs Lisp पैकेज द्वारा प्रदान किया जाता है, जो मानक Emacs वितरण के साथ शामिल है। से repeat.elकी प्रलेखन:

यह पैकेज एक कमांड को परिभाषित करता है जो पूर्ववर्ती कमांड को दोहराता है, जो कुछ भी था, उसके तर्क सहित, जो कुछ भी वे थे। यह कमांड कुंजी Cx z से जुड़ा है। एक बार पिछला आदेश दोहराने के लिए, Cx z टाइप करें। इसे तुरंत बाद दूसरी बार दोहराने के लिए, बस z टाइप करें। बार-बार z टाइप करके, आप कमांड को बार-बार दोहरा सकते हैं।

दोहराने की कमांड के बारे में अतिरिक्त जानकारी देखने के लिए, C-h F repeat RETEmacs के भीतर से टाइप करें ।


160

अंतिम आदेश को दोहराएं

C-xz

एक बार जब आप इसे दबाते हैं, तो उसके बाद ही दबाएं z और यह फिर से (बिना C-xफिर से दबाए ) दोहराएगा ।


वास्तव में मैं यह करने के लिए क्या उम्मीद थी।
वसंत गणेश के

81

हां, रिपीट कमांड है। इसे कहा जाता है repeat:

  • आप के साथ आदेशों को दोहरा सकते हैं C-x z, और zदोहराते रहने के लिए हिट कर सकते हैं।

थोड़ा चौंकाने वाला कोई भी उल्लेख नहीं है repeat-complex-command, कुंजी बंधन से उपलब्ध है C-x ESC ESC


2
Mx Mp के समान ही है कि रिपीट-कॉम्प्लेक्स-कमांड पिछले तर्कों को दोहराता है।
यूओ

5
इसके अलावा C-x M-:(mnemonic: पसंद है M-:लेकिन आप के लिए पहले से ही भरा हुआ भाव के साथ)।
फिल्स

6
जी हां, वाकई चौंकाने वाला । स्वीकार किए जाते हैं जवाब है नहीं सर्वश्रेष्ठ उत्तर यहाँ, IMO (लेकिन ओपी जाहिरा तौर पर यह उसके सवाल का सबसे अच्छा मेल खाती है लगता है)। मेरे लिए, यह उत्तर उस निकटतम प्रश्न के लिए है जो लिखित प्रश्न ने पूछा है (अंतिम आदेश दोहराएं)। और repeat.el(जो सदस्यता लेता है C-x z z z...) द्वारा दी जाने वाली संभावनाएं दूसरी निकटतम हैं। दूसरा प्रश्न पूछा गया, जिसके बारे में किस्ट्रोक्स आखिरी बार मारा गया था, सबसे अच्छा उत्तर है C-h l( view-lossage)। describe-last-commandकमांड के लिए IMHO का बहुत कम उपयोग होता है ।
ड्रू

आप C-x M-:एक कीबोर्ड मैक्रो के हिस्से के रूप में भी उपयोग कर सकते हैं , जो कि आसान हो सकता है। डिफ़ॉल्ट repeat-complex-commandबाइंडिंग बार-बार टाइप करने के लिए थोड़ी बहुत बोझिल होती हैं।
रीसायकल

24

इसके अलावा, M-x view-lossageआपको अंतिम सौ (?) दिखाता है कि आपके द्वारा दर्ज कीस्ट्रोक्स। तो, आप देख पाएंगे कि कमांड कहाँ है। यह वही है जो मैंने तब तक इस्तेमाल किया जब तक कि मुझे अभी पता नहीं चला M-x command-historyजिसके बारे में मुझे लगता है कि मैं अभी इसका उपयोग करूंगा C-h w


18

मैं वास्तव में यकीन नहीं है, लेकिन हो सकता है आप इस एक के लिए खोज रहे हैं?

कमांड C-xz( repeat) कई बार Emacs कमांड दोहराने का एक और तरीका प्रदान करता है। यह कमांड पिछले Emacs कमांड को दोहराता है, जो कुछ भी था। एक आदेश को दोहराते हुए उन्हीं तर्कों का उपयोग किया जाता है जो पहले उपयोग किए गए थे; यह हर बार नए तर्क नहीं पढ़ता है।

Emacs Manual, 8.11 एक कमांड को दोहराना


2
और जैसा कि जोहान्स शाउब ने कहा है, zअपने दम पर बाद में किए गए दबावों की पुनरावृत्ति जारी रहेगी।
फिल्स

9

हो सकता है यह भी मदद मिलेगी ... emacs मदद से शब्दशः:

C-x M-ESC runs the command repeat-complex-command
  which is an interactive compiled Lisp function in `simple.el'.
It is bound to <again>, <redo>, C-x M-:, C-x M-ESC.
(repeat-complex-command ARG)

Edit and re-evaluate last complex command, or ARGth from last.
A complex command is one which used the minibuffer.
The command is placed in the minibuffer as a Lisp form for editing.
The result is executed, repeating the command as changed.
If the command has been changed or is not the most recent previous command
it is added to the front of the command history.
You can use the minibuffer history commands M-n and M-p
to get different commands to edit and resubmit.

4

व्यक्तिगत रूप से मुझे सेबस्टियन का विचार उपयोगी लगा। यहाँ एक कार्यशील संस्करण है

(global-set-key "\C-r" #'(lambda () (interactive)
                                 (eval (car command-history))))

2
यह देखते हुए isearchऔर isearch-backwardमहत्वपूर्ण नेविगेशन कमांड हैं, और यह कि बाद में डिफ़ॉल्ट रूप से <kbd> Cr </ kbd> के लिए बाध्य है, कोई भी शायद दोहराने-कमांड के लिए एक बेहतर बंधन पा सकता है। एक मैक पर, मैं कमांड (सुपर) का सुझाव दूंगा -Y, क्योंकि कुछ ऐप में पहले से ही 'पूर्ववत' के विपरीत का उपयोग करने का एक सम्मेलन है।
ब्रिगिड मैकडोनेल

0

यह पुराना है, लेकिन Google पॉप पहले इसे पोस्ट करता है जब मैं Emacs प्रॉम्प्ट पर टाइप की गई अंतिम कमांड को पुनः प्राप्त करना चाह रहा था। इनमें से किसी भी उत्तर ने मेरे लिए काम नहीं किया इसलिए मैंने अपने दो सेंट में उन लोगों के लिए रखने का फैसला किया जो बाद में इस तरह से ठोकर खा सकते हैं जैसे मैंने किया था। मैं Portacle का उपयोग कर रहा हूँ, लेकिन मैंने पाया कि मैं यहाँ क्या देख रहा था इसलिए मुझे उम्मीद है कि यह अलग-अलग सेटअप के साथ काम करने के लिए पर्याप्त सामान्य है। वैसे भी, मेरे लिए जो काम किया गया है वह इतिहास के माध्यम से उपयोग करना C-↑और C-↓साइकिल चलाना है। उपयोग करना M-pऔर M-nसाथ ही काम करना , लेकिन मैं तीर का उपयोग करना पसंद करता हूं क्योंकि मैं बैश का काफी उपयोग करता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.