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.


Réponses:


210

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


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)


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.


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!


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.