2013-01-22 34 views
6

विम नियमित अभिव्यक्ति में के साथ शुरू नहीं पर 'बार' द्वारा 'foo' की जगह ले, मुझे पता है इसे का उपयोग bar% के साथ शुरू सभी लाइनों पर से foo को बदलने के लिए संभव हैविम - लाइनों, '' वर्ण

:g/^%/s/foo/bar/g 

लेकिन मैं foobar द्वारा % से शुरू नहीं होने वाली सभी पंक्तियों को प्रतिस्थापित करना चाहता हूं। क्या ऐसा करने का कोई तरीका है?

उत्तर

6

के साथ शुरू नहीं तुम बस character class का उपयोग कर % चरित्र नकारना सकते हैं: - % छोड़कर

:g/^[^%]/s/foo/bar/g 

[^%] मैच किसी भी चरित्र, स्ट्रिंग के शुरू में।

3

सभी लाइनों से मिलान करने के :g/^[^%]/s/foo/bar/g कोशिश%

10

:vglobal का प्रयास करें:

:v/^%/s/foo/bar/g 
5

:g का प्रतिलोम, :g! है तो अपने उदाहरण में व्यक्त किया जा सकता है:

:g!/^%/s/foo/bar/g 

ध्यान दें कि :g! सिर्फ लेखन :v (सीएफ जिम डेविस का एक और तरीका है 'उत्तर)