मैं emacs में एक परियोजना के पार कैसे रिफ्लेक्टर करता हूं (हर जगह विधि का नाम बदलें)?


15

मैं एक ओपनसोर्स परियोजना के कुछ हिस्सों को फिर से लिखना चाहता हूं। इसमें नाम बदलने के तरीके शामिल हैं। मैं पूरे प्रोजेक्ट में कैसे कुशलतापूर्वक emacs कर सकता हूं?

मैं बल्कि हर बफ़र में खोज और प्रतिस्थापन जैसे हैक्स का उपयोग नहीं करूंगा।


1
कौनसी भाषा?
फिल्स

क्या आपने ag / grep + wgrep + खोज / प्रतिस्थापित किया है? आप उस में व्यक्तिगत रूप से बफ़र्स नहीं खोलते। Related: emacs.stackexchange.com/a/243/115
कौशल मोदी

अजगर। मुझे पता है कि मेरा सवाल सबसे अच्छा नहीं था, क्षमा करें।
द अनफिन कैट

जैसा कि यह सवाल शीर्ष पर टकरा गया है (यदि कोई Google से इस पर ठोकर खाता है), तो रोप को फिर से शुरू करने के लिए एक समर्पित अजगर पुस्तकालय है। यह अन्य समाधानों की तुलना में अधिक बुद्धिमान है क्योंकि यह संदर्भ में लेता है। इसे Emacs में एक पैकेज में लागू किया जाता है ropemacs
jcaw

@ TheUnfunCat आप अपने प्रश्न में अधिक संदर्भ जोड़ सकते हैं? अब तक यह बहुत अस्पष्ट है, और जोड़ना कि आप एक अजगर परियोजना में ऐसा करना चाहते हैं, बहुत सारी चीजें साफ कर देगा।
DoMiNeLa10

जवाबों:


14

अब मैं helm-agफ़ंक्शन नाम के सभी उदाहरणों को खोजने के लिए उपयोग करता हूं (सभी फ़ाइलों में खोज, incl। उपखंड, न केवल खुले बफ़र्स में), और फिर मैं C-c C-eएक बफर दर्ज करने के लिए उपयोग करता हूं जो सभी मैचों को सूचीबद्ध करता है और वहां मैं फ़ंक्शन का नाम बदलता हूं। जब मैं किया जाता है तो मैं C-c C-c (helm-ag--edit-commit)सभी खोली गई फ़ाइलों में परिवर्तनों को संग्रहीत करने के लिए दबाता हूं ।

यह भ्रामक लग सकता है लेकिन कृपया https://github.com/ShingoFukuyama/helm-swoop देखें

जब आप इसे टटोलेंगे तो आप खुशी के आंसू रोएंगे कि ऐसी अद्भुत कार्यक्षमता मौजूद है।


1
इसने मेरे गाल को फाड़ दिया।
मिहाई

1
शाब्दिक रूप से पहली बार इस वर्कफ़्लो को निष्पादित करते समय मेरी आँखों में आँसू थे, कोई मजाक नहीं
पॉल

महान समाधान!
फ्राकचर

6

चूंकि आपने भाषा निर्दिष्ट नहीं की है, इसलिए "खोज और प्रतिस्थापन" से बेहतर उत्तर देना कठिन है।

Wgrep का उपयोग करना

यदि आप (अंतःक्रियात्मक रूप से) प्रतीक के सभी उदाहरणों को दूसरे के साथ बदलना चाहते हैं, तो wgrep आपका सबसे अच्छा दांव है। यह आप अंतःक्रियात्मक रूप से grep परिणाम बफर को संपादित करते हैं।

  1. करते हैं M-x package-install RET wgrep
  2. भागो M-x rgrep। यह आपसे कुछ आसान सवाल पूछेगा और फिर आपके द्वारा निर्देशित निर्देशिका के अंदर सर्च-टर्म के लिए एक पुनरावर्ती खोज करेगा।
  3. परिणाम बफर पर जाएं और करें M-x wgrep-change-to-wgrep-mode। यह बफ़र अब संपादन योग्य है। आपके द्वारा यहां किए गए किसी भी परिवर्तन को स्वयं फाइलों में परिलक्षित किया जाएगा।
  4. इस बफ़र में एक replace-regexpया एक चलाएं query-replace-regexp, रिफैक्टरिंग करने के लिए।
  5. के साथ अपने संपादन समाप्त करें M-x wgrep-save-all-buffersऔर M-x wgrep-finish-edit

3

कुछ सामान्य दृष्टिकोणों के लिए, Emacs विकी खोज और प्रतिस्थापित पृष्ठ पर " बदलें एक्रॉस फ़ाइल्स " शीर्षक के नीचे देखें : http://www.emacswiki.org/emacs/CategorySearchAndReplace

इसके उत्तर भी देखें: पाठ फ़ाइलों को पहले से न खोलने के लिए Emacs का पुन : उपयोग करना और उन्हें बदलना


3

आप एक बफर में सभी उम्मीदवारों की सूची प्राप्त करने के लिए counsel-rgनिम्नलिखित का उपयोग कर सकते हैं C-c C-owउन्हें संपादित करने के लिए दबाएं wgrep। मैं ieditप्रतीक नाम के लिए सलाह देता हूं । प्रेस C-c C-cकरने के लिए।

निर्भरता:

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