2012-02-14 20 views
6

एक 'foo' के साथ 'bar' और 'bar' के सभी उदाहरणों को vim में 'foo' के साथ कैसे बदल देगा?विम दो शब्दों को एक दूसरे के साथ प्रतिस्थापित करें

+0

आप पाया है के रूप में एक उत्तर, कृपया इसे स्वीकार करें चिह्नित करें। – johnny

उत्तर

7

बदलाव के लिए एक अस्थायी शब्द का उपयोग कर के अलावा, आप भी इस तरह abolish प्लगइन का उपयोग कर सकते हैं:

:%SubVert/{foo,bar}/{bar,foo}/g 
+0

धन्यवाद! ठीक वही जो मेरे द्वारा खोजा जा रहा था। –

1
  1. :% s/foo/bbaarr/जी
  2. :% s/बार/foo/जी
  3. :% s/bbaarr/foo/जी

यह एक होशियार मौजूद होना चाहिए ऐसा करने का तरीका, लेकिन यह निश्चित रूप से काम करेगा!

+0

सुधार 3.:% s/bbaarr/bar/g – Bhaskar

0

आप temp शब्द का उपयोग करके इसे कर सकते हैं। बस सुनिश्चित करें कि यह वर्तमान दस्तावेज़ में मौजूद नहीं है।

/\<asd123\> 
:%s/\<foo\>/asd123/g 
:%s/\<asd123\>/bar/g 
:%s/\<bar\>/foo/g 
10

इस पर एक नज़र डालें: how to write only one pattern to exchange two strings in two-ways in vim

:s/foo\|bar/\={'foo':'bar','bar':'foo'}[submatch(0)]/g 
+1

यह थोड़ा और जटिल है, हां, लेकिन कोई प्लगइन नहीं है? कई इसे पसंद कर सकते हैं। –

+0

@JasonMcGhee: जब विकल्प स्ट्रिंग "\ =" से शुरू होती है तो शेष को अभिव्यक्ति के रूप में व्याख्या किया जाता है। – kev

+0

इसे प्यार करो, यह वहीं कुछ विमफू है –

संबंधित मुद्दे