在vim中移動html表格列

在vim中移動html表格列

我有一個 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 ...

我想做的是將“描述”列中的所有條目下移。所以我想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. 移至第一項,然後使用 刪除它ditfoo1現在在預設暫存器中。

  3. 使用以下命令啟動巨集qx(使用任何可用的字母而不是x)。

  4. 使用 移到下面的行j

  5. 直觀地選擇帶有 的標籤內容vit

  6. 使用 ,將所選文字 ( foo2) 替換為預設暫存器 () 的內容。foo1p

  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 插件非常好。

相關內容