ลบจากตำแหน่งเคอร์เซอร์ปัจจุบันไปยังหมายเลขบรรทัดที่กำหนดในตัวแก้ไข vi


108

ฉันจะลบบล็อกข้อความจากแถวเคอร์เซอร์ปัจจุบันไปยังหมายเลขบรรทัดที่กำหนดใน vi ได้อย่างไร

ตัวอย่างเช่น:

 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%">

ใน Vim ฉันมักจะใช้โหมดการเลือกภาพสำหรับสิ่งนี้ แต่ฉันไม่มี Vim ให้ใช้งานบนเซิร์ฟเวอร์นี้ นอกจากนี้ยังเป็นการเร็วกว่าที่จะระบุหมายเลขบรรทัดแทนที่จะนับจำนวนบรรทัดที่อยู่ในบล็อกในบางกรณี


ที่เกี่ยวข้อง: vi.stackexchange.com/questions/1915/…
J. Chomel

คำตอบ:


210

คุณสามารถใช้บางอย่างเช่นd63Gลบจากบรรทัดปัจจุบันจนถึงบรรทัด 63


5
โอ้วิธีแก้ปัญหาในโหมดปกติ - ดียิ่งขึ้น!
seanhodges

50
ในการเพิ่มสิ่งนี้หากคุณต้องการลบบรรทัดที่ 45 ถึง 64 ให้ทำ: 45,64d
ThinkCode

110

ในการลบจากaถึงbให้ใช้

:a,bd

จากปัจจุบันไปใช้b

:,bd

(โดยที่aและbในรหัสจะถูกแทนที่ด้วยตัวเลขของคุณ)


1
ยอดเยี่ยม. ฉันสามารถทำ ":., 63d" เพื่อดำเนินการตามตัวอย่างการลบด้านบน ขอบคุณมาก!
seanhodges

13

เหมือนกับคำตอบที่ยอมรับ แต่พิมพ์เร็วกว่าเล็กน้อย:

d63gg ลบจากบรรทัดปัจจุบันเป็นบรรทัดที่ 63


8

ทำไมต้องนับเส้น? ไปที่บรรทัดสุดท้ายที่คุณต้องการลบและทำเครื่องหมายโดยพิมพ์maซึ่ง "ทำเครื่องหมาย" ด้วยตัวระบุ "a" จากนั้นขึ้นไปที่บรรทัดบนสุดที่คุณต้องการลบแล้วพิมพ์d'aDelete เพื่อทำเครื่องหมาย "a" แบม!


ไม่ทำงาน (vim 7.4.160, CentOS) บางทีอาจต้องใช้ส่วนขยายหรือการกำหนดค่าพิเศษ
German Khhlov

6

ในการลบบล็อกของบรรทัดใน Vi:

n: มาจากหมายเลขบรรทัด

m: เป็นไปหมายเลขบรรทัด

  1. จากบรรทัดปัจจุบันจนถึงหมายเลขบรรทัดที่กำหนด -

    :,md

  2. จาก / ไปยังหมายเลขบรรทัดเฉพาะ

    :n,md

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.