@ मालाबार ने wgrep
grep / 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 !
।