Tengo una tabla HTML con filas como esta:
<tr> <td>DATE</td> <td>NUMBER</td> <td>DESCRIPTION</td> <td>DEADLINE</td> </tr>
<tr> <td>6/7</td> <td>1</td> <td>foo1</td> <td>bar1</td> </tr>
<tr> <td>6/15</td> <td>2</td> <td>foo2</td> <td>bar2</td> </tr>
<tr> <td>6/20</td> <td>3</td> <td>foo3</td> <td>bar3</td> </tr>
... etc ...
Lo que me gustaría hacer es desplazar todas las entradas de la columna DESCRIPCIÓN hacia abajo. Entonces, me gustaría bajar foo1
un paso, me gustaría bajar foo2
un paso, etc. Pero me gustaría conservar todo lo demás en la tabla. ¿Cómo puedo hacer esto en vim?
Respuesta1
Lo que entiendo es que quieres que la tabla se vea así, con una extraña celda vacía debajo DESCRIPTION
:
<tr> <td>DATE</td> <td>NUMBER</td> <td>DESCRIPTION</td> <td>DEADLINE</td> </tr>
<tr> <td>6/7</td> <td>1</td> <td></td> <td>bar1</td> </tr>
<tr> <td>6/15</td> <td>2</td> <td>foo1</td> <td>bar2</td> </tr>
<tr> <td>6/20</td> <td>3</td> <td>foo2</td> <td>bar3</td> </tr>
…
¿Estoy en lo cierto? Aquí estáunoforma en que puedes hacerlo:
Formatee este código con
:%!column -t
o un complemento de Vim:<tr> <td>DATE</td> <td>NUMBER</td> <td>DESCRIPTION</td> <td>DEADLINE</td> </tr> <tr> <td>6/7</td> <td>1</td> <td>foo1</td> <td>bar1</td> </tr> <tr> <td>6/15</td> <td>2</td> <td>foo2</td> <td>bar2</td> </tr> <tr> <td>6/20</td> <td>3</td> <td>foo3</td> <td>bar3</td> </tr>
Vaya al primer elemento y luego elimínelo con
dit
.foo1
ahora está en el registro predeterminado.Inicie una macro con
qx
(use cualquier letra disponible en lugar dex
).Vaya a la línea de abajo con
j
.Selecciona visualmente el contenido de la etiqueta con
vit
.Reemplace el texto seleccionado (
foo2
) con el contenido del registro predeterminado (foo1
) usandop
.Detenga la macro con
q
. El contenido del registro predeterminado ahora estáfoo2
listo para usarse la próxima vez que se invoque la macro.Aplica la macro tantas veces como necesites con algo como
<number of rows>@x
.
Resultado final:
<tr> <td>DATE</td> <td>NUMBER</td> <td>DESCRIPTION</td> <td>DEADLINE</td> </tr>
<tr> <td>6/7</td> <td>1</td> <td></td> <td>bar1</td> </tr>
<tr> <td>6/15</td> <td>2</td> <td>foo1</td> <td>bar2</td> </tr>
<tr> <td>6/20</td> <td>3</td> <td>foo2</td> <td>bar3</td> </tr>
…
Versión condensada:
:%!column -t<CR>
(movement)
ditqxjvitpq
17@x
Utilice otro registro con nombre en el paso 2 si no quiere alterar el registro predeterminado (y el portapapeles de su sistema, si corresponde).
Si solo desea incrementar el número en foo2
y Co, elComplemento VisIncres muy bueno.