2011-12-19 12 views
6

मुझे दृश्य चयन के साथ समस्या है और एक नियमित अभिव्यक्ति को प्रतिस्थापित कर रहा है। जब मैं कुछ पाठ कि पूरी पंक्ति शामिल नहीं है, और हिट का चयन करें: कमांड लाइन को लाने के लिए, और कर की तरहविम दृश्य चयन और regexp

:s/T/t/ 

तो पहले मैच कुछ लाइन पर (चाहे वह या नहीं चुनी गई है) बदल गया है । तो, उदाहरण के लिए, मैं पाठ

Test Text here 

है और मैं नेत्रहीन शब्द पाठ चयन करें, फिर ऊपर प्रतिस्थापन चलाने के लिए, मैं

test Text here 

साथ खत्म जो नहीं है कि मैं क्या चाहता हूँ।

कोई भी विचार सही परिणाम कैसे प्राप्त करें?

संपादित करें: एक दृश्य चयन के साथ: वास्तविक कमांड लाइन

'<,'>s/T/t/ 

के रूप में विम द्वारा चूक जब आप प्रेस है।

उत्तर

10

आप \% वी उपयोग कर सकते हैं (देखें http://vimdoc.sourceforge.net/htmldoc/pattern.html#//%V)

\%V Match inside the Visual area. When Visual mode has already been 
    stopped match in the area that |gv| would reselect. 
    This is a |/zero-width| match. To make sure the whole pattern is 
    inside the Visual area put it at the start and end of the pattern, 
    e.g.: 
     /\%Vfoo.*bar\%V 
    Only works for the current buffer. 

तो:

:s/\%VT/t/ 

आप जी

:s/\%VT/t/g 
कई हिट को बदलने के लिए, जोड़ें/चाहते हैं
+1

': एच% वी' के अनुसार, आपको पूरे एस को लपेटना चाहिए यदि आप यह सुनिश्चित करना चाहते हैं कि पैटर्न चयन के अंदर है तो '\% V' में मार्च पैटर्न। पसंद: ': s/\% Vlongpattern \% V/छोटा /'। – m0tive

+0

@ m0tive: मैंने उस पर प्रलेखन उद्धृत किया था। और, जब पैटर्न एक वर्ण के रूप में होता है जो उपयोगी नहीं है – sehe

+0

आप मेरे लिए बहुत तेज़ हैं ;-) – m0tive