Mover columnas de la tabla html en vim

Mover columnas de la tabla html en vim

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 foo1un paso, me gustaría bajar foo2un 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:

  1. Formatee este código con :%!column -to 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>
    
  2. Vaya al primer elemento y luego elimínelo con dit. foo1ahora está en el registro predeterminado.

  3. Inicie una macro con qx(use cualquier letra disponible en lugar de x).

  4. Vaya a la línea de abajo con j.

  5. Selecciona visualmente el contenido de la etiqueta con vit.

  6. Reemplace el texto seleccionado ( foo2) con el contenido del registro predeterminado ( foo1) usando p.

  7. Detenga la macro con q. El contenido del registro predeterminado ahora está foo2listo para usarse la próxima vez que se invoque la macro.

  8. 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 foo2y Co, elComplemento VisIncres muy bueno.

información relacionada