Hapus dari posisi kursor saat ini ke nomor baris tertentu di editor vi

108

Bagaimana cara menghapus blok teks dari baris kursor saat ini ke nomor baris tertentu di vi?

Sebagai contoh:

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

Di Vim saya biasanya akan menggunakan mode pemilihan visual untuk ini, tetapi saya tidak memiliki Vim yang saya miliki di server ini. Ini juga akan lebih cepat untuk menentukan nomor baris daripada menghitung berapa banyak baris dalam blok dalam beberapa kasus.

seanhodges
sumber

Jawaban:

210

Anda dapat menggunakan sesuatu seperti d63Gmenghapus dari baris saat ini hingga baris 63.

cnicutar
sumber
5
Oooh, solusi dalam mode normal - bahkan lebih baik!
seanhodges
50
Untuk menambah ini, jika Anda ingin menghapus baris 45 hingga 64, Anda lakukan: 45,64d
ThinkCode
110

Untuk menghapus dari a ke b digunakan

:a,bd

dari saat ini ke penggunaan b

:,bd

(di mana kode a dan b diganti dengan nomor Anda)

mengerikan
sumber
1
Luar biasa. Saya bisa melakukan ":., 63d" untuk melakukan contoh penghapusan di atas. Terima kasih, mengerikan!
seanhodges
13

Sama dengan jawaban yang diterima, tetapi sedikit lebih cepat untuk mengetik:

d63gg menghapus dari baris saat ini ke baris 63.

apostl3pol
sumber
8

Mengapa menghitung garis? Pergi ke baris terakhir yang ingin Anda hapus dan tandai dengan mengetik mayang "menandai" dengan pengenal "a". Kemudian naik ke baris teratas yang ingin Anda hapus dan ketik d'ahapus untuk menandai "a". Bam!

Gary_W
sumber
Tidak berfungsi (vim 7.4.160, CentOS). Mungkin perlu beberapa ekstensi atau konfigurasi khusus.
Khokhlov Jerman
6

Untuk menghapus satu blok baris di Vi:

n: dari nomor baris

m: adalah ke nomor baris

  1. Dari baris saat ini sampai nomor baris tertentu-

    :,md

  2. dari / ke nomor baris tertentu

    :n,md

SteveScm
sumber