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

私がやりたいのは、DESCRIPTION 列のすべてのエントリを下に移動することです。つまり、foo11 ステップ下に移動、1 ステップ下に移動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つこれを行う方法:

  1. このコードを:%!column -tVim プラグインでフォーマットします:

    <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の内容に置き換えます。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プラグインとても良い。

関連情報