मैं अक्सर अपने आप को जैसे बदलने का प्रयास करने लगता है fooके साथ barऔर barसाथ fooएक बफर में।
जिस तरह से मैं आमतौर पर ऐसा करता हूं:
- 3 प्रश्न-बदल देता है:
aaa -> @@@,bbb -> aaa,@@@ -> bbb - स्वचालन पर छोड़ दें और बस हाथ से प्रतिस्थापन करें
मुझे लगता है कि मिलान स्ट्रिंग है या नहीं, यह परखने के लिए ,सिंटैक्स का उपयोग करके कुछ काम करना संभव query-replace-regexpहै । लेकिन परिणामी वाक्य रचना बहुत बोझिल होगी, इसलिए मैंने वास्तव में कभी इसकी कोशिश नहीं की।aaabbb
बात यह है कि यह कितना आम काम है, मुझे लगता है कि एक बेहतर, एकल-चरण, इसे करने का तरीका, या तो मौजूदा पैकेज में या तो होना चाहिए। है?
एक सिंगल-स्टेप तरीका हो सकता है, लेकिन आपका पहला तरीका खराब नहीं है, IMO। और यदि आप रिप्लेसमेंट स्ट्रिंग को चुनते हैं तो आप दूसरे पास के लिए नो-क्वेरी रिप्लेसमेंट कर सकते हैं।
—
ड्रू
@ ड्रू रेगुलर के लिए
—
टी। वेरॉन
query-replace, मुझे पता है कि आमतौर पर M-% str1 str2इस बिंदु को स्थानांतरित करने और हाथ से परिवर्तन करने की तुलना में तेजी से होता है। यह अच्छा है, क्योंकि मुझे यह सोचने में समय बर्बाद करने की ज़रूरत नहीं है कि सबसे तेज़ क्या होगा, भले ही वहाँ केवल एक घटना हो str1। आदर्श रूप से, मैं पाठ उलटा करना चाहूंगा, जितना जल्दी हो सके, ताकि मैं इसके बारे में सोचे बिना भी इसका उपयोग कर सकूं।
कोई सरल उत्तर देगा। आप कोई संदेह नहीं कर सकते हैं कि आप क्या पूछते हैं, जैसे, प्रतिस्थापन के लिए एक लिस्प अभिव्यक्ति का उपयोग करके, पाठ को प्रतिस्थापित करने के लिए संदर्भित करना। जैसे, स्वैप मुहावरे के समान कुछ का उपयोग करें
—
ड्रू
(setq a (prog1 b (setq b a)))। और एक सरल तरीका भी हो सकता है।
मैं
—
पॉलिट्जा
\,(if \1 "b" "a")विशेष रूप से बदसूरत नहीं लगता (एक regexp के खिलाफ \(a\)\|b), लेकिन फिर भी शब्दों को दो बार टाइप करना पड़ता है, अगर वह आपको परेशान करता है।
क्यों नहीं
—
पॉलिट्जा
\(aaa\)\|bbb?