Xóa khỏi vị trí con trỏ hiện tại đến một số dòng nhất định trong trình chỉnh sửa vi


108

Làm cách nào để xóa một khối văn bản từ hàng con trỏ hiện tại đến một số dòng nhất định trong vi?

Ví dụ:

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

Trong Vim, tôi thường sử dụng chế độ lựa chọn trực quan cho việc này, nhưng tôi không có Vim theo ý của mình trên máy chủ này. Việc chỉ định một số dòng cũng sẽ nhanh hơn thay vì đếm bao nhiêu dòng trong khối trong một số trường hợp.


Câu trả lời:


210

Bạn có thể sử dụng một cái gì đó như d63Gđể xóa khỏi dòng hiện tại cho đến dòng 63.


5
Oooh, một giải pháp ở chế độ bình thường - thậm chí còn tốt hơn!
seanhodges

50
Để thêm vào đó, nếu bạn muốn dòng delete 45 đến 64, bạn làm: 45,64d
ThinkCode

110

Để xóa từ a đến b sử dụng

:a,bd

từ hiện tại đến b sử dụng

:,bd

(trong đó ab trong mã được thay thế bằng số của bạn)


1
Thông minh. Tôi đã có thể thực hiện ":., 63d" để thực hiện ví dụ xóa ở trên. Cảm ơn borrible!
seanhodges

13

Giống như câu trả lời được chấp nhận, nhưng nhập nhanh hơn một chút:

d63gg xóa từ dòng hiện tại đến dòng 63.


8

Tại sao phải đếm dòng? Chuyển đến dòng cuối cùng bạn muốn xóa và đánh dấu nó bằng cách gõ ma"đánh dấu" nó bằng số nhận dạng "a". Sau đó, đi lên dòng trên cùng mà bạn muốn xóa và nhập d'axóa để đánh dấu "a". Bam!


Không hoạt động (vim 7.4.160, CentOS). Có lẽ nó cần một số tiện ích mở rộng hoặc cấu hình đặc biệt.
Đức Khokhlov

6

Để xóa một khối dòng trong Vi:

n: là từ số dòng

m: Là để số dòng

  1. Từ dòng hiện tại cho đến một số dòng nhất định-

    :,md

  2. từ / đến số dòng cụ thể

    :n,md

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.