Supprimer de la position actuelle du curseur vers un numéro de ligne donné dans l'éditeur vi

108

Comment supprimer un bloc de texte de la ligne actuelle du curseur vers un numéro de ligne donné dans vi?

Par exemple:

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

Dans Vim, j'utiliserais généralement le mode de sélection visuelle pour cela, mais je n'ai pas Vim à ma disposition sur ce serveur. Il serait également plus rapide de spécifier un numéro de ligne plutôt que de compter le nombre de lignes dans le bloc dans certains cas.

seanhodges
la source

Réponses:

210

Vous pouvez utiliser quelque chose comme d63Gpour supprimer de la ligne actuelle jusqu'à la ligne 63.

cnicutar
la source
5
Oooh, une solution en mode normal - encore mieux!
seanhodges le
50
Pour ajouter à cela, si vous souhaitez supprimer les lignes 45 à 64, procédez comme suit: 45,64d
ThinkCode
110

Pour supprimer de a à b, utilisez

:a,bd

du courant à l' utilisation b

:,bd

(où a et b dans le code sont remplacés par vos chiffres)

borrible
la source
1
Excellent. J'ai pu faire ":., 63d" pour exécuter l'exemple de suppression ci-dessus. Merci borrible!
seanhodges le
13

Identique à la réponse acceptée, mais un peu plus rapide à taper:

d63gg supprime de la ligne actuelle à la ligne 63.

apostl3pol
la source
8

Pourquoi compter les lignes? Allez à la dernière ligne que vous souhaitez supprimer et marquez-la en tapant maqui la "marque" avec l'identifiant "a". Ensuite, montez à la ligne supérieure que vous souhaitez supprimer et tapez d'apour supprimer pour marquer "a". Bam!

Gary_W
la source
Ne fonctionne pas (vim 7.4.160, CentOS). Peut-être qu'il a besoin d'une extension ou d'une configuration spéciale.
German Khokhlov
6

Pour supprimer un bloc de lignes dans Vi:

n: provient du numéro de ligne

m: correspond au numéro de ligne

  1. De la ligne courante jusqu'à un numéro de ligne donné

    :,md

  2. de / vers des numéros de ligne spécifiques

    :n,md

SteveScm
la source