क्या मैं एक पूरी लाइन को हटा सकता हूं, लाइन ब्रेक को छोड़कर?


33

मेरे लिए एक बहुत ही सामान्य ऑपरेशन विम में, क्योंकि मैं बाध्यकारी-जुनूनी हूं और अपनी फाइलों को व्हाट्सएप से मुक्त रखना पसंद करता हूं, यह एक पूरी लाइन की सामग्री को हटाना है , लेकिन खुद लाइन (यानी लाइन ब्रेक नहीं)।

क्या ऐसा करने का कोई अंतर्निहित तरीका है? शायद एक d<movement command>ऑपरेशन?

अब तक, मेरे पास सबसे अच्छा (प्रश्न में लाइन पर) है 0d$। क्या कोई तेज़ तरीका है?


2
व्हाट्सएप को मैन्युअल रूप से ट्रिम करने के विकल्प के रूप में, आप एक प्लगइन का उपयोग कर सकते हैं जैसे कि वीआईएम-बेहतर-व्हाट्सएप , जो ट्रेलिंग व्हाट्सएप को हाइलाइट करता है, यह एक बार में सभी को हटाने के लिए एक कमांड प्रदान करता है, और यहां तक ​​कि इसे स्वचालित रूप से सेव भी कर सकता है।
डेल्टैब


3
प्लगइन के बिना भी, आप खोज-और-जगह का उपयोग करके वैश्विक रूप से अनुगामी व्हाट्सएप को हटा सकते हैं, जैसे:%s/\s*$//
काइल स्ट्रैंड

जवाबों:


34

आप इसका उपयोग 0Dलाइन पर पहले वर्ण पर जाएंगे और लाइन के अंत तक हटा सकते हैं। ध्यान दें कि आप उपयोग कर सकते हैं ^Dयदि आप किसी पूर्ववर्ती व्हाट्सएप को अकेले छोड़ना चाहते हैं। साथ ही, इन ऑपरेशनों का उपयोग करके दोहराया नहीं जा सकता है .। यदि आप एक ऑपरेशन चाहते हैं जिसे .कमांड के साथ दोहराया जा सकता है , तो डेविड लॉर्ड के जवाब को देखें।

सहायता के विषय:

  • :help 0
  • :help D
  • :help ^

4
हालांकि यह प्रत्यक्ष है, बिंदु के लिए, और (शायद) सबसे कम कीस्ट्रोक्स है, यह .कमांड का उपयोग करके दोहराने योग्य नहीं है । इस कारण से, मुझे लगता है कि cc<Esc>या S<Esc>और अधिक आकर्षक है अगर आप दोहरा के बारे में परवाह।
tommcdo

यह सच है। हालाँकि, आप इसे मैक्रो के रूप में रिकॉर्ड कर सकते हैं और उस उपयोग को दोहरा सकते हैं .
एवरग्रीनट्री

सामान्य तौर पर, मैक्रोज़ को दोहराया नहीं जा सकता है .। वे काम करते हैं जैसे कि उन कीस्ट्रोक्स को अंतःक्रियात्मक रूप से दर्ज किया गया था, इसलिए अलग-अलग आदेशों का इलाज किया जाता है। का उपयोग करते .हुए मैक्रो में केवल अंतिम कमांड दोहराएगा।
तोमकाडो

मैंने इसका परीक्षण किया, और यह नहीं है कि यह मेरे लिए कैसे काम करता है। यदि मैक्रो रिकॉर्ड करता है, तो इसका उपयोग करें @{reg}, आप इसे .बाद में दोहरा सकते हैं ।
एवरग्रीनट्री

1
आप केवल मैक्रो के अंतिम कमांड को दोहरा रहे हैं, जो है D। एक 0Dऑपरेशन के बाद , आपका कर्सर कॉलम 0. में छोड़ दिया जाएगा। यदि आपका कर्सर पहले से ही लाइन की शुरुआत में है (आप एक और एक पर जाने के बाद), तो यह ऐसा लगेगा जैसे मैक्रो ठीक से दोहराया गया था। कर्सर को लाइन में आगे बढ़ाने का प्रयास करें और टाइप करें .- आप देखेंगे कि यह केवल दोहराता है D
tommcdo

20

cc <Esc>जैसा आप पूछेंगे वैसा ही करेंगे, लेकिन इससे ज्यादा कीस्ट्रोक्स हैं 0D। यदि आप बाद में उस लाइन में कुछ डालना चाहते हैं, ccतो सबसे अच्छा हो सकता है।


2
यदि आप शिफ्ट को शामिल करते हैं तो यह समान है और संभवतः आसान है।
होलोले

4
हालांकि यह "सबसे साफ" समाधान नहीं है, इसका एक फायदा है: यह बिल्कुल एक कार्रवाई है, और इसलिए यह .कमांड के साथ दोहराए जाने योग्य है । इसके विपरीत, 0D(चुने हुए उत्तर में सुझाव दिया गया है) दो क्रियाएं हैं: 0गति और Dकमांड।
tommcdo

@ टेंगोट यह शायद 0Dमेरे लिए आसान है क्योंकि मैंने अपने विम्केज़ में jkमैप किया है <Esc>, इसलिए मेरे हाथों को घर की पंक्ति को छोड़ना भी नहीं पड़ेगा।
एवरग्रीनट्री

1
@Nobilis देखें जवाब: S"के लिए पर्याय के रूप में दर्ज है cc"
वोल्कर सीगल

14

Sऔर तब Ctrl+Cया Escउसी कार्य को पूरा करने के लिए लगता है।

इसके बाद इसे दोहराया जा सकता है .क्योंकि यह एक कार्रवाई करता है।


2
मैं सिर्फ एक उत्तर के रूप में इसे जोड़ने के बारे में सोच रहा था और फिर तुम्हारा देखा
sbell

7

0Dशायद तुम क्या चाहते हो यह जगह से लाइन (और कर्सर से पहले किसी भी वर्ण) को छोड़ते हुए कर्सर से लाइन के अंत तक हटा देगा।


एल्थो यह उत्तर एक वर्ष पुराना है, यह ध्यान देने योग्य है कि लाइन की शुरुआत से0D हट जाएगा , कर्सर की स्थिति से नहीं
FliiFe

4

मैं आमतौर पर उपयोग करता हूं ddOddवर्तमान लाइन को हटाने के लिए, और O(एक राजधानी ओ) एक नई लाइन जोड़ने के लिए।

यह भी 3 कीस्ट्रोक्स है, लेकिन ddकेवल 1 और डेढ़ के रूप में गिना जाता है, और मुझे Oटाइप करने में आसान लगता है $

यह इस 0Dसमाधान से अलग है कि यह ऑटो-इंडेंटेशन करता है, उदाहरण के लिए इस कोड के साथ (जहां !···एक टैब है, और कर्सर:

def asd():
!···if foo:
!···!···foo()█
!···!···foobar()

0D आपका साथ छोड़ देगा:

def asd():
!···if foo:
█
!···!···foobar()

और ddOआपका साथ छोड़ देगा:

def asd():
!···if foo:
!···!···█
!···!···foobar()

और यदि आप इसके <Esc>तुरंत बाद दबाते हैं , तो विम को ऑटो-इंडेंटेशन को हटा देना चाहिए, इसलिए आपके पास भी ऐसा ही है 0D

कोई 'सही' तरीका नहीं है, यह निर्भर करेगा कि आप वास्तव में क्या करना चाहते हैं। मैं पसंद करता हूं ddOक्योंकि यह अधिक लचीला है, और क्योंकि यह "मेरी उंगलियों में" है :-)


2
^Dव्हाट्सएप को अकेला छोड़ देगा।
एवरग्रीनट्री

चूँकि Oआपको इन्सर्ट मोड में छोड़ दिया जाता है, यह ccबिना ऑटो-इंडेंटेशन को छोड़कर .... के बराबर है , जब तक कि आपकी लाइन पहले से ऑटो-इंडेंट नहीं थी।
काइल स्ट्रैंड

यह फ़ाइल की अंतिम पंक्ति पर अलग तरह से व्यवहार करेगा।
tommcdo

0

और उस एक कीमती कुंजी स्ट्रोक को बचाने के लिए आप 0Cवर्तमान लाइन पर सभी वर्णों को हटा देंगे और आपको सम्मिलित मोड में डाल देंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.