Movendo colunas da tabela HTML no vim

Movendo colunas da tabela HTML no vim

Eu tenho uma tabela HTML com linhas 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 ...

O que eu gostaria de fazer é deslocar todas as entradas na coluna DESCRIÇÃO para baixo. Então, eu gostaria de descer foo1um passo, gostaria de descer foo2um passo, etc. Mas gostaria de preservar todo o resto na tabela. Como posso fazer isso no vim?

Responder1

O que entendi é que você quer que a tabela fique assim, com uma estranha célula vazia abaixo 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>

Estou certo? Aqui estáummaneira que você pode fazer isso:

  1. Formate este código com :%!column -tum plugin do 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. Vá para o primeiro item e exclua-o com dit. foo1agora está no registro padrão.

  3. Inicie uma macro com qx(use qualquer letra disponível em vez de x).

  4. Vá para a linha abaixo com j.

  5. Selecione visualmente o conteúdo da tag com vit.

  6. Substitua o texto selecionado ( foo2) pelo conteúdo do registro padrão ( foo1) usando p.

  7. Pare a macro com q. O conteúdo do registro padrão está agora foo2pronto para ser usado na próxima vez que a macro for chamada.

  8. Aplique a macro quantas vezes precisar com 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>

Versão condensada:

:%!column -t<CR>
(movement)
ditqxjvitpq
17@x

Use outro registro nomeado na etapa 2 se não quiser mexer no registro padrão (e na área de transferência do sistema, se aplicável).

Se você quiser apenas incrementar o número em foo2e Co, oPlug-in VisIncré muito bom.

informação relacionada