Elimina dalla posizione corrente del cursore a un dato numero di riga nell'editor vi


108

Come si elimina un blocco di testo dalla riga corrente del cursore a un dato numero di riga in vi?

Per esempio:

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

In Vim di solito userei la modalità di selezione visiva per questo, ma non ho Vim a mia disposizione su questo server. In alcuni casi, sarebbe anche più veloce specificare un numero di riga anziché contare quante righe ci sono all'interno del blocco.


Risposte:


210

Potresti usare qualcosa come d63Gcancellare dalla riga corrente fino alla riga 63.


5
Oooh, una soluzione in modalità normale - anche meglio!
seanhodges

50
Per aggiungere a questo, se desideri eliminare le righe da 45 a 64, fai: 45,64d
ThinkCode

110

Per cancellare da a a b utilizzare

:a,bd

da corrente a b uso

:,bd

(dove un e b nel codice sono sostituiti dai tuoi numeri)


1
Eccellente. Sono stato in grado di fare ":., 63d" per eseguire l'esempio di eliminazione sopra. Grazie borrible!
seanhodges

13

Uguale alla risposta accettata, ma leggermente più veloce da digitare:

d63gg cancella dalla riga corrente alla riga 63.


8

Perché contare le linee? Vai all'ultima riga che desideri eliminare e contrassegnala digitando maquale "contrassegna" con l'identificatore "a". Quindi vai alla riga superiore che desideri eliminare e digita d'aper eliminare per contrassegnare "a". Bam!


Non funziona (vim 7.4.160, CentOS). Forse ha bisogno di un'estensione o di una configurazione speciale.
Tedesco Khokhlov

6

Per eliminare un blocco di linee in Vi:

n: è dal numero di riga

m: è al numero di riga

  1. Dalla riga corrente fino a un determinato numero di riga-

    :,md

  2. da / a numeri di riga specifici

    :n,md

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.