Verschieben von HTML-Tabellenspalten in vim

Verschieben von HTML-Tabellenspalten in vim

Ich habe eine HTML-Tabelle mit Zeilen wie diesen:

<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 ...

Ich möchte alle Einträge in der Spalte „BESCHREIBUNG“ nach unten verschieben. Ich möchte also foo1einen Schritt nach unten gehen, ich möchte foo2einen Schritt nach unten gehen usw. Aber ich möchte alles andere in der Tabelle beibehalten. Wie kann ich das in vim tun?

Antwort1

So wie ich es verstehe, möchten Sie, dass die Tabelle so aussieht, mit einer merkwürdigen leeren Zelle darunter 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>

Habe ich recht? Hier isteinsSo können Sie es machen:

  1. Formatieren Sie diesen Code mit :%!column -toder einem Vim-Plugin:

    <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. Zum ersten Element wechseln und es dann mit löschen dit. foo1befindet sich jetzt im Standardregister.

  3. Starten Sie ein Makro mit qx(verwenden Sie anstelle von einen beliebigen verfügbaren Buchstaben x).

  4. Wechseln Sie mit zur Zeile darunter j.

  5. Wählen Sie den Inhalt des Tags visuell mit aus vit.

  6. Ersetzen Sie den ausgewählten Text ( foo2) mithilfe von durch den Inhalt des Standardregisters ( foo1) p.

  7. Stoppen Sie das Makro mit q. Der Inhalt des Standardregisters ist jetzt foo2, und kann beim nächsten Aufruf des Makros verwendet werden.

  8. Wenden Sie das Makro so oft wie nötig an, beispielsweise mit <number of rows>@x.

Endresultat:

<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>

Kurzfassung:

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

Verwenden Sie in Schritt 2 ein anderes benanntes Register, wenn Sie das Standardregister (und ggf. Ihre Systemzwischenablage) nicht ändern möchten.

foo2Wenn Sie nur die Zahl in und Co erhöhen möchten ,VisIncr-Pluginist sehr gut.

verwandte Informationen