मैंने निम्नलिखित का अनुसरण करने की कोशिश की है:
VI संपादक में चयनित पाठ को कैसे हटाएं
परंतु
5dd
देता है
E492: एडिटर कमांड नहीं: 5dd
मैंने तब कोशिश की:
5d
जो केवल एक ही लाइन को हटाता है। मैं कई लाइनें कैसे हटा सकता हूं?
मैंने निम्नलिखित का अनुसरण करने की कोशिश की है:
VI संपादक में चयनित पाठ को कैसे हटाएं
परंतु
5dd
देता है
E492: एडिटर कमांड नहीं: 5dd
मैंने तब कोशिश की:
5d
जो केवल एक ही लाइन को हटाता है। मैं कई लाइनें कैसे हटा सकता हूं?
जवाबों:
ऐसा लगता है जैसे आप कमांड मोड में कमांड दर्ज कर रहे हैं (उर्फ "एक्स मोड")। उस संदर्भ में :5d
लाइन नंबर 5 को हटा दिया जाएगा, और कुछ नहीं। के लिए 5dd
है कि, पांच फलस्वरूप लाइनों कर्सर पर शुरू हटाने - - इरादा के रूप में काम करने के लिए सामान्य मोड में दर्ज करें और साथ आदेशों उपसर्ग नहीं है :
।
मुझे यह आसान लगता है
/superuser/170795/how-can-i-select-and-delete-lines-of-text-in-vi
यदि आप लाइन नंबर जानते हैं तो आप कई (रेंज) लाइनें हटा सकते हैं:
:[start_line_no],[end_line_no]d
ध्यान दें: d का अर्थ है हटाना
कहाँ पे,
start_line_no वह आरंभिक पंक्ति है जिसे आप हटाना नहीं चाहते हैं और end_line_no वह अंतिम पंक्ति है जिसे आप हटाना नहीं चाहते हैं। प्रारंभ और अंत के बीच की रेखाएं, जिनमें प्रारंभ और अंत शामिल हैं, हटा दी जाएंगी।
उदाहरण के लिए:
:45,101d
45 और 101 सहित 45 और 101 के बीच की लाइनें हटा दी जाएंगी।
$
फ़ाइल में अंतिम पंक्ति को भी चिह्नित करने के लिए उपयोग कर सकते हैं । इसलिए :45,$d
हर पंक्ति को अंत तक 45 से हटा देगा।
/<\/div>/
:.,[end_line_no]d
सामान्य मोड में उपयोग के लिए सूचीबद्ध कमांड ( :कमांड मोड के लिए उपसर्ग )।
विम में परीक्षण किया गया।
लाइन राशि द्वारा:
लाइन नंबरों द्वारा:
Backwards range given, OK to swap (y/n)?
यदि आप एक गैर-दृश्य मोड विधि पसंद करते हैं और रेखा संख्याओं को स्वीकार करते हैं, तो मैं आपको एक और सीधा रास्ता सुझाना चाहूंगा।
उदाहरण
मैं पंक्ति 45 से 101 तक पाठ को हटाना चाहता हूं।
मेरा तरीका आपको कमांड-मोड में नीचे कमांड टाइप करने का सुझाव देता है:
45Gd101G
यह पढ़ता है:
लाइन ४५ (
45G
) पर जाएँ फिर टेक्स्ट (d
) को मौजूदा लाइन से लाइन १०१ (101G
) तक हटा दें ।
ध्यान दें कि पर vim
आप उपयोग कर सकते हैं gg
की जगह में G
।
@ बोनी वर्गीस के उत्तर की तुलना करें जो है:
:45,101d[enter]
उसके उत्तर से ऊपर के कमांड को 9 बार टाइपिंग की enterआवश्यकता होती है, जिसमें मेरे उत्तर के लिए 8 - 10 बार टाइपिंग की आवश्यकता होती है। इस प्रकार, मेरी विधि की गति तुलनीय है।
व्यक्तिगत रूप से, मैं अपने आप को पसंद करते हैं 45Gd101G
अधिक :45,101d
है क्योंकि मैं छड़ी की तरह vi के आदेश की वाक्य रचना करने के लिए, में यह मामला है:
+---------+----------+--------------------+
| syntax | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command | 45G | d101G |
+---------+----------+--------------------+
Escयह सुनिश्चित करने के लिए कुंजी दबाएं कि आपके संपादन मोड में नहीं हैं। हटाए जाने वाली पहली पंक्ति पर कर्सर रखें। दर्ज करें :5dd
। वर्तमान लाइन, और अगली चार लाइनें हटा दी जानी चाहिए।
वैकल्पिक रूप से, यदि आपके पास लाइन नंबरिंग चालू है ...
Escयह सुनिश्चित करने के लिए कुंजी दबाएं कि आपके संपादन मोड में नहीं हैं। वह जगह दर्ज करें :#,#d
जहाँ '#' को हटाने के लिए शुरुआत और समाप्ति पंक्ति संख्याएँ हैं।
यदि आप एक विशिष्ट लाइन ट्रिगर के बाद एक सीमा हटाना चाहते हैं तो आप कुछ इस तरह का उपयोग कर सकते हैं
:g/^TMPDIR/ :.,+11d
की हर मुठभेड़ के बाद 11 लाइनों (समावेशी) को हटा देता है ^TMPDIR
।
सभी लाइनों के उपयोग को हटाने के लिए - ESC gg dG कुछ पंक्तियों को हटाने के लिए 5 कहते हैं तो ESC 5dd का उपयोग करें
यह निम्नलिखित के रूप में किया जा सकता है ..