2011-06-17 8 views
81

¿Cómo borro un bloque de texto de la fila del cursor actual a un número de línea dado en vi?Eliminar de la posición actual del cursor a un número de línea dado en el editor 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 por lo general sería utilizar el modo de selección visual para esto, pero no tengo a mi disposición Vim 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.

+0

Relacionado: https://vi.stackexchange.com/questions/1915/how-do-i-delete-a-large-block-of-text-without-counting-the-lines –

Respuesta

148

Se podría utilizar algo como d63G eliminar de la línea actual hasta la línea 63.

+3

¡Oooh, una solución en modo normal, incluso mejor! – seanhodges

+34

Para agregar a esto, si desea eliminar las líneas 45 a 64, debe hacerlo: 45,64d – ThinkCode

92

eliminar de un a b uso

:a,bd 

de corriente a b uso

:,bd 

(donde un y b en código se sustituyen por sus números)

+1

Excellent. Pude hacer ":., 63d" para realizar el ejemplo de eliminación anterior. Gracias borrible! – seanhodges

+1

Esperando los 10 minutos obligatorios antes de marcar resuelto ... – seanhodges

4

Para borrar un bloque de líneas en Vi:

n: es de línea de números

m: es - número de línea

  1. De cu rrent línea hasta que una línea dada número-

    :,md

  2. de/a números de líneas específicas

    :n,md

8

Igual que la respuesta aceptada, pero ligeramente más rápido escribir:

d63gg se borra de la línea actual a la línea 63.

+0

Esto no funciona con 'vi'. –

5

¿Por qué contar las líneas? Vaya a la última línea que desea eliminar y márquela escribiendo ma que la "marca" con el identificador "a". A continuación, vaya a la línea superior que desea eliminar y escriba d'a para eliminar para marcar "a". Bam!

+0

¡Este es mucho más flexible! –

Cuestiones relacionadas