TD

2012年10月19日

テキストファイルで、スペースで区切った表を作ることがあるが、これをちゃんとした表に見えるように空白を補うのは結構面倒だ。
align.vimは、それを自動で整形してくれるが、スペースを|(縦棒)に変換してくれたり、ましてや<td>タグでくくってくれたりはしない。

例えば、以下の様なスペース区切りの表を書く。

あっくん みかん 梨 りんご
いぶきちゃん 大根 ブロッコリー トマト
うみうし 後鰓類 軟体動物門腹足綱 無楯類

それをビジュアルモードで選択し、

<Leader>tsp

とすると、こうなる。

あっくん     みかん 梨               りんご
いぶきちゃん 大根   ブロッコリー     トマト
うみうし     後鰓類 軟体動物門腹足綱 無楯類

これはこれで便利であるが、以下の様な表にしたい。

|あっくん    |みかん|梨              |りんご|
|いぶきちゃん|大根  |ブロッコリー    |トマト|
|うみうし    |後鰓類|軟体動物門腹足綱|無楯類|

そのためにはキーマップで、以下のように定義する。

vmap <silent> ,t :s!\ !\|!g<CR>gv:s!.*!\|&\|!g<CR>gv<Plug>AM_t\|

スペースひとつを、ひとつの区切りとしているので、連続したスペースをいれると項がずれるが、実用にはなる。縦棒を:(コロン)とか、好みのものに変えるのも簡単。

同じく、スペース区切りの表から、tableタグ用に<TD>と<TR>のタグを自動変換するキーマップは以下。

vmap <silent> ,T :s!\ !\</td\>\<td\>!g<CR>gv:s!.*!\<tr\>\<td\>&\</td\>\</tr\>!g<CR>gv<Plug>AM_Htd

すると、こうなる。

<tr><td> あっくん     </td><td> みかん </td><td> 梨               </td><td> りんご </td></tr>
<tr><td> いぶきちゃん </td><td> 大根   </td><td> ブロッコリー     </td><td> トマト </td></tr>
<tr><td> うみうし     </td><td> 後鰓類 </td><td> 軟体動物門腹足綱 </td><td> 無楯類 </td></tr>

align.vimが入っていない場合は、最後の<CR>から後ろを取れば良い。

vmap <silent> ,t :s!\ !\|!g<CR>gv:s!.*!\|&\|!g<CR>
vmap <silent> ,T :s!\ !\</td\>\<td\>!g<CR>gv:s!.*!\<tr\>\<td\>&\</td\>\</tr\>!g<CR>

参考にしたのは、以下のページ
Big Sky



sylphide_ffr31mr at 22:27コメント(0)トラックバック(0) 
記事検索
最新コメント
livedoor プロフィール
月別アーカイブ
  • ライブドアブログ