दृश्य स्टूडियो में बहुभाषी ढूँढें और बदलें


83

क्या यह किया जा सकता है? हम VS2005 और VS2008 और VS2010 का उपयोग कर रहे हैं।

मैं नियमित अभिव्यक्ति का मतलब नहीं है - जो उनकी जगह है - लेकिन सादे पुराने पाठ खोजने और बदलने के लिए। मुझे पता है कि हम इसे (एक चुटकी पर) नियमित अभिव्यक्तियों के साथ \ n टैग का उपयोग कर सकते हैं, लेकिन रेगेक्स एस्केप पात्रों में उलझना पसंद नहीं करते, साथ ही एक पठनीयता मुद्दा भी है।

अगर यह नहीं किया जा सकता है तो लोग क्या सादा और सरल (फ्री) विकल्प इस्तेमाल कर रहे हैं? इसमें हमारे अपने मैक्रो को खटखटाना शामिल नहीं है।


3
यदि आप अतिरिक्त सॉफ़्टवेयर पर विचार कर रहे हैं, तो ऐसा करने के लिए एक मैक्रो लिखना है। मैं कहूंगा कि मैं बस बुलेट को काटता हूं और सीखता हूं कि रेगेक्स को कैसे खोजें / बदलें। कम से कम इसे बनाया गया है और इसमें अच्छी मदद मिली है ...
डेव डी

3
मुझे पता है कि रेगेक्स कैसे करना है लेकिन इसमें बहुत अधिक विराम वाले किसी भी पाठ को रेगेक्स फाइन ट्यूनिंग की एक बहुत अधिक आवश्यकता है। मुझे विश्वास नहीं हो रहा है कि एक साधारण खोज /
बदले

1
वोट दें इस MSConnect सुविधा का अनुरोध प्राप्त करने की कोशिश करने के लिए एक में निर्मित इस के लिए समाधान।
मैट फ़ॉस जूल

1
इस सवाल पर कोई अपडेट? अपनी टिप्पणियों से ऐसा नहीं लगता कि शीर्ष उत्तर पूरी तरह से काम करता है। यह बहुत अच्छा होगा अगर इसके लिए एक अच्छा समाधान हो ...
जोकोल जूल

जवाबों:


65

मैं अंत में यह पाया ..

किसी भी बाहरी मैक्रो को डाउनलोड करने और लोड करने की आवश्यकता नहीं है।

कम से कम इन-बिल्ट मैक्रो के साथ विजुअल स्टूडियो 2008 में इसका काम। :)

चरण:
1) वह पाठ चुनें जिसे आप ढूंढना चाहते हैं।
2) "Alt + F8" दबाएँ या "टूल्स -> मैक्रोज़ -> मैक्रो एक्सप्लोरर"
3) डबल क्लिक करें "नमूना -> उपयोगिताएँ -> फाइंडलाइन"। (यह "खोजें" फ़ील्ड में लोड किए गए आपके चयन के साथ फ़ाइंड बॉक्स खोलेगा। "ढूंढें" फ़ील्ड में दिखाए गए काटे गए पाठ के बारे में चिंता न करें। मुझ पर विश्वास करें, फ़ील्ड में यह सब है..उसे दिखाने का तरीका हो सकता है ... " ))
4) "त्वरित और बदलें" बटन पर "खोजें और बदलें" संवाद बॉक्स पर क्लिक करें। टेक्स्ट के साथ अपनी जगह दर्ज करें।
5) और अपनी आवश्यकता के अनुसार 3 में से किसी भी बटन पर क्लिक करें ... और उसका किया हुआ। :)

हुर्रे .. इसका काम .. यह करने के लिए एक सीधा आगे रास्ता नहीं हो सकता है लेकिन आप एमएस के साथ जानते हैं .. कुछ भी सरल और आसान नहीं है ..


यह "फाइलों में ढूंढना" सही नहीं है? पास के रूप में मैं बता सकता हूं, यह केवल एकल-फ़ाइल है?
टॉम लिंजा

1
@tlianza VS2010 में, आप क्विक फाइंड डायलॉग को फाइल्स में फाइंड में बदल सकते हैं या स्क्रीन के टॉप के पास बटन्स का इस्तेमाल करके फाइल्स में बदल सकते हैं। इसलिए, जब मैक्रो ने त्वरित खोज संवाद को आबाद कर लिया है, तो आप दूसरे दृश्य पर स्विच कर सकते हैं।
आरोनसेब

13
मुझे नहीं लगता कि यह काम करता है अगर आपके प्रतिस्थापन पाठ में भी कई लाइनें हैं। जब आप "रिप्लेस विथ" बॉक्स में पेस्ट करते हैं, तो यह छोटा हो जाता है।
एंड्रयू कॉर्करी

बस एक कीबोर्ड शॉर्टकट को इस मैक्रोज़ से जोड़ना होगा और यह आम खोज और प्रतिस्थापित करने की तरह सरल होगा। इस ट्रिक के लिए आपका बहुत-बहुत धन्यवाद!
शमूएल

5
मैक्रोज़ को विज़ुअल स्टूडियो संस्करणों के बाद रिटायर किया गया है, इसलिए यह अब काम नहीं करता है।
डेविड बर्ग

23

यह आज विजुअल स्टूडियो 2012 में काम करता है:

fooPatternToStart.*(.*\n)+?.*barPatternToEnd

देखें कि कैसे (.*\n)+?भाग कई रेखाओं में मेल खाता है, गैर-लालची।
fooPatternToStartआपकी शुरुआत की रेखा पर कुछ रेगेक्स पैटर्न है, जबकि barPatternToEndनीचे एक और रेखा पर खोजने के लिए आपका पैटर्न है, संभवतः नीचे कई लाइनें ...

उदाहरण यहां मिला ।

सरल और प्रभावी :)

नोट: VS2012 से पहले , जो पैटर्न काम करता था वह था:fooPatternToStart.(.\n)+@.*barPatternToEnd


1
अच्छी तरह से समझाया गया है और यह ठीक से काम करता है कि यह बॉक्स पर कैसे कहता है। यह देखते हुए कि पोस्टिंग के समय भी मैक्रों मृत हैं, मेरा मानना ​​है कि यह स्वीकृत उत्तर होना चाहिए।
नथनचेरे

19

आप इस ब्लॉग प्रविष्टि पर एक नज़र डालना चाहते हैं:

मल्टीलाइन खोज और दृश्य स्टूडियो में बदलें

आपकी खोज से बचने के लिए मैक्रो कोड प्रदान करता है और वीएस को खोजने और संवाद को बदलने के लिए दिखाता है।


यह लिंक दुर्भाग्यपूर्ण है।
18.04 पर राद रॉक्स

अभी भी यहाँ से काम करता है ... मैंने भी कोड को एक gist पर कॉपी किया है: gist.github.com/3706886 जो मदद करता है।
रॉबर्ट एडम्स

अस्थायी समस्या रही होगी।
केड रूक्स

3
इस मैक्रो को वीएस एक्सटेंशन में बदल दिया गया है इसलिए यह वीएस 2012 और 2013 में काम करता है। देखें helixoft.com/blog/...
पीटर Macej

2
@PeterMacej आज के अनुसार एक उत्तर है जो आपके एक्सटेंशन से लिंक करता है - जो मैंने बढ़ा दिया है - लेकिन आदर्श रूप से आप अपना उत्तर पोस्ट करते हैं और मैं इसे स्वीकार करूंगा - 2014 तक आपका एक्सटेंशन संभवतः इस बहुत लोकप्रिय प्रश्न का स्वीकृत उत्तर होगा।
हव्सब्ल

18

आप "ढूँढें और बदलें" संवाद में "रेगुलर एक्सप्रेशंस का उपयोग करें" चेकबॉक्स पर क्लिक करके बहुस्तरीय अभिव्यक्तियों की खोज कर सकते हैं। इसके बाद लाइन ब्रेक का संकेत दिया जाता है \n

यहां छवि विवरण दर्ज करें


7
हम बहु-पंक्ति पाठ के साथ कैसे बदल सकते हैं? कोई विचार?
टोज़ेफ़

2
आप बदलना पड़ सकता है \nकरने के लिए \r\nकरता है, तो अपने दस्तावेज़ कैरिएज रिटर्न छुप गई हैं।
जेम्स मैककॉर्मैक

प्रश्न में स्पष्ट रूप से नियमित अभिव्यक्तियों का उपयोग नहीं किया गया है। नियमित अभिव्यक्ति में ड्रॉ बैक है जो न केवल आपको लाइन ब्रेक से बचने की आवश्यकता है बल्कि आपको सभी मैच पात्रों से बचने की आवश्यकता है जो नियमित अभिव्यक्ति से बचते हैं। (इस सवाल का जवाब नहीं देने के लिए वोट करें)
डेविड बर्ग


2

यह केवल Microsoft द्वारा प्रदान किया गया है। कृपया https://visualstudiogallery.msdn.microsoft.com/699CE302-B0D4-4083-BE0E-1682E873CEBF की जाँच करें

यह केवल नियमित अभिव्यक्ति का उपयोग करता है। लेकिन जो लोग रेगेक्स को नहीं जानते हैं वे इसका उपयोग करना बेहतर समझते हैं।


1
यह मेरा समाधान था, अभी भी इस तिथि पर लागू है।
चकेड़ा

1

आप अल्ट्राएडिट के साथ फाइलें भी खोल सकते हैं जो मल्टीलाइन प्रतिस्थापन का पूर्ण समर्थन करती है। यदि आप केवल एक बार उपयोग करने का इरादा रखते हैं तो आप परीक्षण संस्करण का उपयोग कर सकते हैं।


1

एंड्रयू कॉर्करी की टिप्पणी के बारे में 19 अगस्त को 9:52 बजे ऊपर:

यदि आप एक बहु-पंक्ति प्रतिस्थापन स्ट्रिंग निर्दिष्ट करना चाहते हैं, तो मैक्रो कोड को संपादित करें और नीचे दिखाए अनुसार प्रतिस्थापन पाठ सेट करें। यह आपको आवश्यक छोटे संशोधनों के साथ अपने प्रतिस्थापन को "ठीक-ठीक" करने की अनुमति देगा।

 Sub FindLine()
    Dim textSelection As TextSelection

    textSelection = DTE.ActiveDocument.Selection
    textSelection.CharLeft(True)
    DTE.ExecuteCommand("Edit.Find")
    DTE.Find.FindWhat = textSelection.Text

    'also preset replacement text with current selection
    DTE.Find.ReplaceWith = textSelection.Text
End Sub

0

नोटपैड ++ का नवीनतम संस्करण (इस पोस्टिंग के रूप में) मल्टी-लाइन खोज / प्रतिस्थापित करता है। मुझे नहीं पता कि यह सच है जब यह पूछा गया था। लेकिन विज़ुअल स्टूडियो में अब कोई स्थूल समर्थन नहीं है, यह अब प्रासंगिक है।

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