2010-12-16 6 views

उत्तर

22

आप पैटर्न के बिना सभी लाइनों का चयन करने के लिए v का उपयोग कर सकते हैं:
:v/pattern/d जो आप करना चाहते हैं उसे प्राप्त करेंगे।

देखें :help :v

+7

इस वैश्विक कमांड का उपयोग खोल कमांड के लिए बेहतर लगता है क्योंकि: (1) यह एक आंतरिक विम कमांड है और यह बाहरी grep उपयोगिता पर निर्भर नहीं है, जो विंडोज सिस्टम पर समस्या हो सकती है, और (2) इसके बारे में अनिश्चित है, लेकिन चूंकि शेल फ़िल्टर अनिवार्य रूप से एक पूरी तरह से नया दस्तावेज़ लौटाता है, और वैश्विक आदेश केवल लाइनों को हटा देता है, मुझे लगता है कि पूर्ववत इतिहास को छोटे (और इस प्रकार तेज़) रखने के लिए वैश्विक बेहतर है, और (3) आम तौर पर उपयोग करने की आदत पाने के लिए आम तौर पर अच्छा विचार है विम ग्लोबल्स (: जी और: वी) क्योंकि वे आपको मेल खाने वाली लाइनों पर मनमाने ढंग से कार्रवाई करने देते हैं, न केवल हटाएं। –

2

एक तरीका यह है की जरूरत नहीं है हटाएँ चाहते हैं को हटाने के लिए

:%!grep pattern 

यह आदेश एक खोल (!) के लिए अपनी पूरी फ़ाइल (%) गुजरता है जो इसे ०१२३१९३१६८५३ के माध्यम से चलाता है: एक खोल फिल्टर के साथ हैकमांड और आउटपुट को अपनी संपादक विंडो में लौटाता है।

+2

सभी सम्मान के कारण, जेवियर टी द्वारा प्रदान किया गया उत्तर सही है। vim इस सटीक समस्या के लिए ': v' प्रदान करता है। –

+0

मैं सहमत हूं। हालांकि, खोल फ़िल्टर क्षमता अपने अधिकार में शानदार रूप से उपयोगी है। –

2

आप बस पैटर्न

:g!/pattern/d 

यह सब लेकिन चयनित लाइनों को नष्ट करेगा नकारना कर सकते हैं।

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