¿Cómo elimino un bloque de texto de la fila actual del cursor a un número de línea dado en vi?
Por ejemplo:
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%">
En Vim, normalmente usaría el modo de selección visual para esto, pero no tengo Vim a mi disposición en este servidor. También sería más rápido especificar un número de línea en lugar de contar cuántas líneas hay dentro del bloque en algunos casos.
Respuestas:
Podría usar algo como
d63G
eliminar de la línea actual hasta la línea 63.fuente
Para eliminar de a a b use
de la corriente a b uso
(donde a y b en el código se reemplazan por sus números)
fuente
Igual que la respuesta aceptada, pero un poco más rápido de escribir:
d63gg
elimina de la línea actual a la línea 63.fuente
¿Por qué contar líneas? Vaya a la última línea que desea eliminar y márquela escribiendo
ma
que la "marca" con el identificador "a". Luego suba a la línea superior que desea eliminar y escribad'a
para eliminar para marcar "a". ¡Bam!fuente
Para eliminar un bloque de líneas en Vi:
n
: es del número de líneam
: Es a número de líneaDesde la línea actual hasta un número de línea dado-
:,md
desde / hacia números de línea específicos
:n,md
fuente