Comment puis-je supprimer un bloc de texte de la ligne actuelle du curseur sur 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'utilisais généralement le mode de sélection visuel 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.
Vous pouvez utiliser quelque chose comme d63G
pour supprimer de la ligne en cours jusqu’à la ligne 63.
Pour supprimer de a à b utilisez
:a,bd
de courant à b utiliser
:,bd
(où a et b dans le code sont remplacés par vos numéros)
Identique à la réponse acceptée, mais légèrement plus rapide à taper:
d63gg
supprime de la ligne actuelle la ligne 63.
Pour supprimer un bloc de lignes dans Vi:
n
: is from numéro de ligne
m
: is to numéro de ligne
De la ligne en cours jusqu'à un numéro de ligne donné -
:,md
de/vers des numéros de ligne spécifiques
:n,md
Pourquoi compter les lignes? Allez à la dernière ligne que vous souhaitez supprimer et marquez-la en tapant ma
qui la "marque" avec l'identifiant "a". Ensuite, allez à la ligne supérieure que vous souhaitez supprimer et tapez d'a
pour supprimer pour marquer "a". Bam!