2012-08-09 25 views
7

मुझे यकीन है कि इसका उत्तर दिया गया है, लेकिन क्वेरी Google के लिए बहुत जटिल है।वीआईएम में जब तक रेगेक्स पूरा नहीं हो जाता तब तक मैं सभी लाइनों को कैसे हटा सकता हूं?

संक्षेप में, मैं कुछ कोड से कई बहिष्कृत विधियों को हटाने की कोशिश कर रहा हूं। इसलिए मैं फ़ाइल को स्किम कर रहा हूं और जब मैं एक विधि को हटाता हूं जिसे मैं निकालना चाहता हूं, तो मैं प्रत्येक पंक्ति को तब तक हटा रहा हूं जब तक कि मुझे एक रेखा दिखाई नहीं दे जो तब एक स्ट्रिंग "def" हो।

मुझे लगता है कि वीआईएम मुझे ऐसा करने के लिए एक सरल मैक्रो बनाने देना चाहिए, लेकिन यह चाल मुझे बच रही है।

यहां ऐसी चीज है जिसे मैं निकालना चाहता हूं।

def Method_to_Delete(self): 
    """ 


    @return Control ID : 
    @author 
    """ 
    results = {} 
    results['xx'] = "thingy" 
    results['yy'] = 'thingy2' 
    return results 

def Method_to_Keep(self): 
    """ 
    This is a method that does something wonderful!!! 

    @return Control ID : 
    @author 
    """ 
    results = {} 
    results['xxx'] = "WhooHoo!" 
    results['yyy'] = 'yippee!!' 
    return results 

मैं के साथ "डीईएफ़ Method_to_Delete" लाइन पर कर्सर है और कुछ है कि जब तक ऊपर से हटा दिए जाएँगे, लेकिन नहीं सहित "डीईएफ़ Method_to_Keep" करना चाहते हैं

वहाँ मिल गया है कई की तुलना में एक बेहतर तरीका होना करने के लिए "डीडी" कमांड।

+1

विम के अंदर, 'सहायता डी' देखें और ध्यान दें कि जब '{motion} 'के लिए पैटर्न का उपयोग किया जाता है, तो यह रेखाएं फैलता है। –

उत्तर

13

विम खोज वास्तव में टेक्स्ट ऑब्जेक्ट्स हैं! इसका मतलब है कि आप बस कर सकते हैं:

d/\s*def 

फिर, बस आदेश . साथ के रूप में वांछित दोहराएँ।

+1

आपने मुझे इसे हराया, लेकिन मुझे लगता है कि आपका मतलब 'd/\ tdef' है। –

+0

कूल! असली बंद लेकिन काफी नहीं। मुझे लगता है कि मैं थोड़ा अस्पष्ट था। मैं पूरी लाइन को हटाना चाहता हूं, इसलिए मैं वर्तमान "डीफ़" लाइन –

+0

से छुटकारा पाता हूं इसलिए मेरे पास "def" के साथ एक कर्सर है और मैं उस पंक्ति को और प्रत्येक पंक्ति को हटाना चाहता हूं, लेकिन "\ s \ s \ s \ sdef" से शुरू होने वाली अगली पंक्ति शामिल नहीं है (मेरे टैब हमेशा विस्तारित होते हैं) –

11

एक सीमा के साथ :delete पूर्व आदेश का उपयोग करें

:,/Keep/-1d 

स्पष्टीकरण

  • पूर्ण आदेश :.,/Keep/-1delete
  • .,/Keep/-1 होगा रेंज जिसमें delete आदेश
  • कार्य करेगा है . का मतलब वर्तमान रेखा है।
  • b/c हम एक रेंज का उपयोग कर रहे हैं और वर्तमान स्थिति से शुरू . माना जा सकता है और लाइन है कि मैच के लिए
  • /Keep/ खोज गिरा दिया "रखें"
  • /Keep/-1 पंक्ति से मेल खाती है कि तब घटाना के लिए खोज है एक पंक्ति
  • :delete अधिक सहायता देखने

    लिए :d

को शॉर्ट किया जा सकता है

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

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