इस लेख में कहा गया है कि "Emacs में रिडो है क्योंकि आप पूर्ववत करते समय दिशा को उलट सकते हैं, जिससे पूर्ववत करें"।
इसका क्या मतलब है? एक उपयोगकर्ता Emacs के साथ 'फिर से' कैसे कर सकता है?
इस लेख में कहा गया है कि "Emacs में रिडो है क्योंकि आप पूर्ववत करते समय दिशा को उलट सकते हैं, जिससे पूर्ववत करें"।
इसका क्या मतलब है? एक उपयोगकर्ता Emacs के साथ 'फिर से' कैसे कर सकता है?
जवाबों:
लघु संस्करण: पूर्ववत पूर्ववत करने से। यदि आप पूर्ववत करते हैं, और फिर एक गैर-संपादन आदेश जैसे कि C-f, तब अगला पूर्ववत पूर्ववत करें, जिसके परिणामस्वरूप फिर से होगा।
लंबा संस्करण:
आप संचालन के ढेर पर संचालन के रूप में पूर्ववत करने के बारे में सोच सकते हैं। यदि आप C-fपूर्ववत संचालन के अनुक्रम के बाद कुछ कमांड (यहां तक कि नेविगेशन कमांड जैसे ) करते हैं, तो सभी पूर्ववत ऑपरेशन स्टैक पर धकेल दिए जाते हैं। तो अगला पूर्ववत अंतिम आदेश को पूर्ववत करता है। मान लें कि आपके पास एक ऑपरेशन अनुक्रम है जो इस तरह दिखता है:
अब, आप पूर्ववत करें। यह अंतिम क्रिया को पूर्ववत करता है, जिसके परिणामस्वरूप निम्न सूची है:
यदि आप इस बिंदु पर पूर्ववत के अलावा कुछ करते हैं - कहते हैं, C-fऑपरेशन स्टैक इस तरह दिखता है:
अब, जब आप पूर्ववत करते हैं, तो पहली चीज जो पूर्ववत है वह पूर्ववत है। अपने मूल स्टैक (और दस्तावेज़ स्थिति) में परिणाम:
यदि आप पूर्ववत अनुक्रम को तोड़ने के लिए एक संशोधित कमांड करते हैं, तो उस कमांड को पूर्ववत के बाद जोड़ा जाता है और इस प्रकार बाद में पूर्ववत किया जाना पहली बात है। मान लीजिए कि आपने मारने के बजाय "बार" पर बैकस्पेस दिया है C-f। तब आप होते
यह जोड़ने / फिर से जोड़ने से ऐड इनफ़िनिटम होता है। इसका उपयोग करने में थोड़ा सा समय लगता है, लेकिन यह वास्तव में Emacs को एक अत्यधिक लचीला और शक्तिशाली पूर्ववत / पुनर्परिभाषित करता है।
पूर्ववत करने के लिए: C-_
पूर्ववत करने के बाद फिर से करना: C-g C-_
C-_ जो पूर्ववत किया गया है उसे फिर से करने के लिए कई बार टाइप करें C-_ एक इमैक कमांड को कई बार रिड्यूस करने के लिए, अपने कमांड को निष्पादित करें C-xzऔर फिर zकमांड को दोहराने के लिए कुंजी पर कई बार टाइप करें (दिलचस्प है जब आप कई बार मैक्रो को निष्पादित करना चाहते हैं)
C-u
, उदाहरण के लिए C-u 8 *
(आठ को सम्मिलित करता है जहां कैरेट है)। तो आप x चरणों C-u x C-_
को पूर्ववत करने के लिए उपयोग कर सकते हैं ।
C-x e
) निष्पादित करने के ठीक बाद , आप बस इसे e
जितनी बार आपको फिर से निष्पादित करने की आवश्यकता होती है उतनी बार दबा सकते हैं ।
C-/
और इसके अलावा C-x u
वैकल्पिक पूर्व कुंजी बाइंडिंग हैं C-_
। मैं पसंद करता हूं C-/
क्योंकि हिट करना आसान है।
C-g C-_
"पूर्ववत करने के बाद फिर से करें", यह केवल पहली बार जब आप संयोजन को हिट करते हैं तब लागू होता है। उसके बाद, बिना अपने पूर्ववत कुंजी को दोहराएं C-g
। तो पूर्ववत करने के बाद तीन बार दाईं ओर फिर से टाइप करने के लिए C-g C-_ C-_ C-_
। यदि आप टाइप करते हैं C-g C-_ C-g C-_ C-g C-_
, तो आप बस हलकों में घूमेंगे, अपने पूर्ववत के अपने फिर से करना ...
C-/
C-/
C-/
C-g
C-/
C-g
C-/
C-/
:। ध्यान दें कि C-g
दोहराया नहीं गया है।C-g
C-/
C-g
C-/
C-/
यदि आपने अपने पिछले पूर्व कमांड के बाद से कोई कुंजी (चाहे टाइपिंग कैरेक्टर या सिर्फ कर्सर हिलाना) दबाया है, तो C-g
आपके अगले पूर्ववत / फिर से टाइप करने की कोई आवश्यकता नहीं है ।C-g
केवल हिट करने के लिए एक सुरक्षित कुंजी है जो अपने आप पर कुछ भी नहीं करता है, लेकिन आपके पूर्ववत अनुक्रम के अंत को इंगित करने के लिए एक गैर-पूर्व कुंजी के रूप में गिना जाता है। एक अन्य कमांड जैसे कि C-f
बहुत काम करेगा; यह सिर्फ इतना है कि यह कर्सर को वहां से ले जाएगा जहां आपके पास था।
C-g
जब आप हिट करते हैं या जब आप का मतलब नहीं था, और आप अब गलत दिशा में पूर्ववत कर रहे हैं, तो बस C-g
फिर से अपनी दिशा को उलटने के लिए मारा । आप अपने आकस्मिक रेडोस के माध्यम से सभी तरह से पूर्ववत करना होगा और आप चाहते हैं पूर्ववत करने के लिए पूर्ववत करें, लेकिन यदि आप बस मारते रहेंगे C-/
, तो आप अंततः उस राज्य तक पहुंच जाएंगे जो आप चाहते हैं। वास्तव में, हर राज्य में बफर कभी भी पहुंच में रहा है, अगर आप हिट करते हैंC-g
एक बार और फिर C-/
पर्याप्त समय दबाते हैं।
के लिए वैकल्पिक शॉर्टकट undo
, अन्य की तुलना में C-/
, कर रहे हैं C-_
, C-x u
औरM-x
undo
।
Emacs के पूर्ववत सिस्टम पर अधिक विवरण के लिए Emacs मैन्युअल में पूर्ववत देखें ।
अधिक सामान्य पूर्ववत / पुनः कार्यक्षमता के इच्छुक लोगों के लिए, किसी ने लिखा है undo-tree.el
। यह गैर-एमाक्स का रूप और अनुभव प्रदान करता है, लेकिन यह पूर्ववत इतिहास के संपूर्ण 'वृक्ष' तक पहुंच प्रदान करता है।
मुझे Emacs की अंतर्निहित पूर्ववत प्रणाली पसंद है, लेकिन इस पैकेज को बहुत सहज होना चाहिए।
यहाँ फाइल से ही टिप्पणी है:
Emacs में एक शक्तिशाली पूर्ववत प्रणाली है। अधिकांश सॉफ़्टवेयर में मानक पूर्ववत / फिर से करें प्रणाली के विपरीत, यह आपको किसी भी पुनर्प्राप्त करने की अनुमति देता है बफर के पिछले राज्य (जबकि मानक पूर्ववत करें / फिर से करें प्रणाली आपको पुनः प्राप्त करते ही पिछले राज्यों को खो सकती है)। हालांकि, यह शक्ति एक मूल्य पर आती है: कई लोग Emacs के पूर्ववत सिस्टम को भ्रामक और उपयोग करने में मुश्किल पाते हैं, कई पैकेजों को पैदा करते हैं जो इसे कम शक्तिशाली लेकिन अधिक सहज पूर्ववत / फिर से व्यवस्थित प्रणाली से बदल देते हैं।
दोनों मानक पूर्ववत / फिर से डेटा के साथ नुकसान, और Emacs पूर्ववत की उलझन, परिवर्तन के रैखिक अनुक्रम के रूप में पूर्ववत इतिहास का इलाज करने की कोशिश से स्टेम। यह। इस पैकेज द्वारा प्रदान किया गया `पूर्ववत-वृक्ष-मोड 'Emacs के पूर्ववत प्रणाली को एक ऐसे सिस्टम से बदल देता है जो पूर्ववत इतिहास का इलाज करता है क्योंकि यह है: परिवर्तनों की एक शाखा वृक्ष। यह सरल विचार मानक पूर्ववत / पुनः प्रणाली के अधिक सहज व्यवहार को किसी भी इतिहास को कभी नहीं खोने की शक्ति के साथ जोड़ा जा सकता है। एक अतिरिक्त पक्ष बोनस यह है कि कुछ मामलों में पूर्व इतिहास को अधिक कुशलता से संग्रहित किया जा सकता है, जिससे Emacs इतिहास को त्यागना शुरू करने से पहले और अधिक बदलावों को जमा कर सकता है।
रेडो के लिए एक पूर्व -पेड़ क्वर्क से सावधान रहें !
कई लोकप्रिय "स्टार्टर किट" (प्रस्तावना, पर्ससेल, स्पेसमैक्स) पूर्ववत पेड़ के साथ बंडल में आते हैं। अधिकांश (सभी?) भी इसे सक्षम करते हैं। जैसा कि उल्लेख किया गया है, पूर्ववत करें यह पूर्ववत / पुनर्वसु वृक्ष की कल्पना और आघात का एक आसान तरीका है। प्रस्तावना भी इसे एक कुंजी-राग ( uu
), और भी देती हैC-x u
।
समस्या यह है कि पूर्ववत करें, इमको के डिफ़ॉल्ट और पुनर्विचार के लिए प्रसिद्ध बंधन को मिटा देता है :C-g C-/
।
इसके बजाय, आप पूर्ववत् / फिर से करने के लिए इन सममित कुंजियों का उपयोग कर सकते हैं :
C-/ undo
C-S-/ redo
ये तब से उपयोगी हैं जब तक कि आप विज़ुअलाइज़र को खोले बिना जल्दी से फिर से करना चाहते हैं।
मुझे "सामान्य" पूर्ववत / फिर से करने के लिए अत्यधिक redo.el
उपयोगी लगता है , और मैं आमतौर पर सीएसज़ और पूर्ववत सीज़ेड के लिए इस तरह से बांधता हूं:
(when (require 'redo nil 'noerror)
(global-set-key (kbd "C-S-z") 'redo))
(global-set-key (kbd "C-z") 'undo)
बस फ़ाइल डाउनलोड करें, इसे अपने लिस्प-पथ में डालें और अपने में उपरोक्त पेस्ट करें .emacs
।
डिफ़ॉल्ट रूप से, Emacs में redo को Cg को दबाने की आवश्यकता होती है, फिर पूर्ववत करें।
हालाँकि यह संभव है कि Emacs इन-बिल्ट इन-द इनटू इन द रिडो कमांड को भी लागू करने के लिए।
पैकेज पूर्ववत करें , पूर्ववत और फिर से दोनों को उजागर करने के लिए अंतर्निहित कार्यक्षमता में Emacs का उपयोग करता है।