Перемещение столбцов таблицы HTML в vim

Перемещение столбцов таблицы HTML в vim

У меня есть HTML-таблица со строками вроде этой:

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

Я хотел бы сместить все записи в столбце DESCRIPTION вниз. Поэтому я хотел бы сместиться на foo1один шаг вниз, я хотел бы сместиться на foo2один шаг вниз и т. д. Но я хотел бы сохранить все остальное в таблице. Как это сделать в vim?

решение1

Насколько я понимаю, вы хотите, чтобы таблица выглядела вот так, со странной пустой ячейкой внизу 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>

Я прав? Вотодинкак это можно сделать:

  1. Отформатируйте этот код с помощью :%!column -tплагина 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. Перейдите к первому элементу, а затем удалите его с помощью dit. foo1теперь находится в регистре по умолчанию.

  3. Начните макрос с qx(используйте любую доступную букву вместо x).

  4. Перейдите на строку ниже с помощью j.

  5. Визуально выберите содержимое тега с помощью vit.

  6. Замените выделенный текст ( foo2) содержимым регистра по умолчанию ( foo1), используя p.

  7. Остановите макрос с помощью q. Содержимое регистра по умолчанию теперь foo2готово к использованию при следующем вызове макроса.

  8. Применяйте макрос столько раз, сколько вам нужно, например, с помощью <number of rows>@x.

Конечный результат:

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

Сокращенная версия:

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

Используйте другой именованный регистр на шаге 2, если вы не хотите связываться с регистром по умолчанию (и системным буфером обмена, если применимо).

Если вы хотите только увеличить число в foo2и Co,Плагин VisIncrочень хорошо.

Связанный контент