@ मालाबार ने wgrepgrep / ack / ag परिणामों के संपादन के लिए पैकेज के उपयोग का उल्लेख किया ।
मैं agपैकेज का उपयोग करते हुए पैकेज के पैकेज और पैकेज का उपयोग करने के बारे में एक विस्तृत चलना लिखना चाहूंगा, ताकि पैकेज wgrep-agका उपयोग करके परिणाम प्राप्त किए जा सकें multiple-cursors।
ये पैकेज मेलपा के माध्यम से उपलब्ध हैं। आपको अपने सिस्टम पर agउर्फ the_silver_searcher स्थापित करने की भी आवश्यकता है।
यह वॉक-थ्रू उन मामलों पर लागू होता है, जहां आप उन सभी / चयनित स्थानों पर एकल पंक्ति संपादन करने का तरीका खोज रहे हैं जो agमिले।
agअपने सिस्टम और उपर्युक्त emacs संकुल पर स्थापित करें ।
agउन सामग्रियों के साथ खोज करने वाली फ़ाइलों का समर्थन करता है जो आपके निर्दिष्ट रेगेक्स से मेल खाती हैं। यह बताने का सबसे सरल तरीका है कि agप्रोजेक्ट रूट को .gitवहां एक खाली फ़ोल्डर कहां रखना है । फिर खोज का उपयोग कर M-x ag-project-regexp।
परिणामी खोज का बफर डिफ़ॉल्ट रूप से संपादन योग्य नहीं है। इसे संपादन योग्य बनाने के M-x wgrep-change-to-wgrep-modeलिए wgrep-dfault बाइंडिंग करें या उसका उपयोग करें C-c C-p।
अब यदि आपको अपनी सभी फाइलों में 'एब्डेफ़' को 'ग़ज़ल' में बदलने की ज़रूरत है, तो आप 'एब्डेफ़' की खोज करेंगे और एग परिणाम बफर उस स्ट्रिंग वाले सभी लाइनों को प्रदर्शित करेगा। फिर आप उस बफर को संपादन योग्य बनाते हैं और उन तारों को मैन्युअल रूप से बदलते हैं और उन परिवर्तनों को M-x wgrep-finish-editडिफ़ॉल्ट बाइंडिंग करने या उपयोग करने पर वास्तविक फ़ाइल बफ़र्स में परिलक्षित होता है C-c C-e। आप query-replace-regexpउस खोज को प्रतिस्थापित करने के लिए भी उपयोग कर सकते हैं ।
मैं multiple-cursorsतेजी से रिफैक्टरिंग के लिए उपयोग करना पसंद करता हूं ताकि मैं एक वास्तविक समय प्रतिक्रिया देख सकूं जहां मेरे कई संपादन एक साथ हो रहे हैं। स्ट्रिंग को हाइलाइट करें जिसे आप उस एजी परिणाम बफर में बदलना चाहते हैं और कॉल करें M-x mc/mark-all-like-thisऔर फिर विस्मय में दूर संपादित करें क्योंकि आप एक ही समय में कई बिंदुओं पर संपादित किए गए सामान को देख रहे हैं।
एक बार जब आप संपादन से खुश हो जाते हैं, जैसा कि मैंने ऊपर उल्लेख किया है, C-c C-eवास्तविक बफ़र्स में परिवर्तनों को "प्रतिबिंबित" करने के लिए करते हैं। बफ़र्स को अभी तक नहीं बचाया गया है।
सभी बफ़र्स को बचाने के लिए, मैं आमतौर पर एक ही बार में, एमएसीएस डिफ़ॉल्ट C-x s !बाइंडिंग का उपयोग करता हूं ।
यहाँ स्क्रीनशॉट के साथ एक उदाहरण का उपयोग मामला है:
यह के सभी उदाहरणों बदलने की प्रक्रिया से पता चलता bind-to-modi-mapकरने के लिए bind-to-my-mapमेरे में ~/.emacs.d/।
जब मैं bind-to-modi-mapअपने emacs सेटअप फ़ोल्डर में खोज करता हूं, तो मुझे नीचे 'एग्ड रिजल्ट मिलता है:
यह बफ़र केवल-पढ़ने के लिए है।
इसके बाद M-x wgrep-change-to-wgrep-mode, मैं -modi-mapउस चयन के सभी उदाहरणों को हाइलाइट करता हूं, M-x mc/mark-all-like-thisउन चयनों को संपादित करने के बाद -my-map, यह निम्नानुसार दिखता है:

ब्लू हाइलाइट दिखाता है कि प्रेस करते समय कौन सी लाइनें संशोधित होंगी C-c C-e।
मारने पर C-c C-e, आप इस स्क्रीनशॉट में वास्तविक फ़ाइल में परिलक्षित परिवर्तन देख सकते हैं:

मैं तो सभी संशोधित फ़ाइलों का उपयोग कर बचाना होगा C-x s !।