Vi düzenleyicide mevcut imleç konumundan belirli bir satır numarasına kadar sil


108

Geçerli imleç satırından vi'deki belirli bir satır numarasına kadar bir metin bloğunu nasıl silerim?

Örneğin:

 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'de bunun için genellikle görsel seçim modunu kullanırdım, ancak bu sunucuda elimde Vim yok. Ayrıca bazı durumlarda blok içinde kaç satır olduğunu saymak yerine bir satır numarası belirlemek daha hızlı olacaktır.


Yanıtlar:


210

d63GMevcut satırdan 63. satıra kadar silmek gibi bir şey kullanabilirsiniz .


5
Oooh, normal modda bir çözüm - daha da iyi!
seanhodges

50
Buna eklemek için, 45 ile 64 arasındaki satırları silmek istiyorsanız, şunları yapmalısınız: 45,64d
ThinkCode

110

Dan silmek için bir etmek b kullanımını

:a,bd

akımdan b kullanımına

:,bd

(burada koddaki a ve b numaralarınızla değiştirilir)


1
Mükemmel. Yukarıdaki silme örneğini gerçekleştirmek için ":., 63d" yapabildim. Çok teşekkürler!
seanhodges

13

Kabul edilen yanıtla aynı, ancak yazmak biraz daha hızlı:

d63gg mevcut satırdan 63. satıra kadar siler.


8

Neden satırları sayalım? Silmek istediğiniz son satıra gidin ve onu ma"a" tanımlayıcısıyla "işaretleyen" yazarak işaretleyin. Ardından, silmek istediğiniz en üst satıra gidin ve d'a"a" işaretlemek için silmek için yazın . Bam!


Çalışmıyor (vim 7.4.160, CentOS). Belki biraz uzantıya veya özel yapılandırmaya ihtiyacı vardır.
Alman Khokhlov

6

Vi'deki bir satır bloğunu silmek için:

n: Olduğu gelen hat sayısı

m: Olduğu için hat sayısı

  1. Mevcut satırdan belirli bir satır numarasına kadar-

    :,md

  2. belirli satır numaralarına

    :n,md

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.