2011-06-17 11 views
81

में वर्तमान कर्सर स्थिति से किसी दिए गए लाइन नंबर पर हटाएं वर्तमान कर्सर पंक्ति से पाठ के ब्लॉक को वीआई में दिए गए लाइन नंबर पर कैसे हटाया जाए?वीआई संपादक

उदाहरण के लिए:

49 <j:set var="changeSet" value="${build.changeSet}" /> <----- delete from here (cursor position) 
50 <j:if test="${changeSet!=null}"> 
51 <j:set var="hadChanges" value="false" /> 
52 <TABLE width="100%"> 
53  <TR><TD class="bg1" colspan="2"><B>CHANGES</B></TD></TR> 
54  <j:forEach var="cs" items="${changeSet.logs}" varStatus="loop"> 
55  <j:set var="hadChanges" value="true" /> 
56  <j:set var="aUser" value="${cs.hudsonUser}"/> 
57  <TR> 
58   <TD colspan="2" class="bg2">${spc}Revision <B>${cs.revision}</B> by 
59   <B><j:choose> 
60    <j:when test="${aUser!=null}">${aUser.displayName}: </j:when> 
61    <j:otherwise>${cs.user}: </j:otherwise> 
62   </j:choose></B> 
63   <B>(${cs.msgAnnotated})</B>    <----- to here (line 63) 
64   </TD> 
65  </TR> 
66  <j:forEach var="p" items="${cs.paths}"> 
67   <TR> 
68   <TD width="10%"> 

विम में मैं आमतौर पर दृश्य चयन मोड इस के लिए प्रयोग करेंगे, लेकिन मैं इस सर्वर पर मेरी निपटान विम जरूरत नहीं है। कुछ मामलों में ब्लॉक के भीतर कितनी लाइनें हैं, यह गिनने के बजाए एक लाइन नंबर निर्दिष्ट करना भी तेज होगा।

+0

संबंधित: https://vi.stackexchange.com/questions/1915/how-do-i-delete-a-large-block-of-text-without-counting-the-lines –

उत्तर

148

आप d63G की तरह कुछ इस्तेमाल कर सकते हैं 63.

+3

ओह, सामान्य मोड में एक समाधान - यहां तक ​​कि बेहतर! – seanhodges

+34

इसमें जोड़ने के लिए, यदि आप लाइन 45 से 64 को हटाना चाहते हैं, तो आप करते हैं: 45,64d – ThinkCode

92

को उपयोग वर्तमान से एकको ख उपयोग

:a,bd 

से हटाने के लिए

:,bd 

(जहां एक और कोड में ने ले ली है आपकी संख्या)

+1

उत्कृष्ट। मैं उपरोक्त हटाने का उदाहरण करने के लिए ":। 63 डी" करने में सक्षम था। धन्यवाद भयानक! – seanhodges

+1

हल करने से पहले अनिवार्य 10 मिनट की प्रतीक्षा कर रहा है ... – seanhodges

4

लाइन तक वर्तमान पंक्ति से हटाने के लिए Vi में लाइनों की एक ब्लॉक हटाने के लिए: संख्या

m लाइन से है:

n: है

  1. घन से लाइन नंबर एक दिया लाइन तक rrent लाइन टाइप करने के लिए स्वीकार किए जाते हैं जवाब के रूप में

    :,md

  2. से/के लिए विशिष्ट लाइन नंबर

    :n,md

8

एक ही है, लेकिन थोड़ा तेज number-:

d63gg वर्तमान लाइन से लाइन 63 तक हटा देता है।

+0

यह 'vi' के साथ काम नहीं करता है। –

5

लाइनों की गणना क्यों करें? उस अंतिम पंक्ति पर जाएं जिसे आप हटाना चाहते हैं और इसे ma टाइप करके चिह्नित करें जो पहचानकर्ता "ए" के साथ "अंक" देता है। फिर उस शीर्ष पंक्ति तक जाएं जिसे आप हटाना चाहते हैं और "ए" को चिह्नित करने के लिए हटाए जाने के लिए d'a टाइप करें। बैम!

+0

यह एक बहुत अधिक लचीला है! –

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