タンブラー?

Big Sky

12月 15 '11

めんどうな作業がわずか数十秒に!新人プログラマが知らないと一生後悔するVimを使ったHTML生成

こういう作業ってプログラマなら日常茶飯事で、やり方しらない新人プログラマはいつまでたっても新人なのだけど…
めんどうな作業がわずか数秒に!新人デザイナーが 知らないと一生後悔するExcelを使ったHTML生成 | Webロケッツマガジン

お客さんから送られてきた、Excelデータからせっせとリストや表のHTMLをコーディングしているあなた!そろそろ手がが疲れてきていませんか?

そんなあなたは、この記事で紹介するExcelテクニックをぜひ覚えてください。

面倒な作業が、わずか数秒で終わります! http://webrocketsmagazine.com/entry/20111209/html-code-generation-using-excel.html 僕もこの記事見て最初は「これはVimmerに対する釣りだ。我慢しよう。」と思ったけど、寝れなかったので書いてみた。ちなみに数秒では終わりません。きっとExcelでも数秒では終わりません。

ただExcelよりは遥かに応用が効くし、どんなデータが来ってどんな出力形式を求められたって簡単に作れてしまう新人プログラマは、きっと誰の目にも輝く期待の星に見える事でしょう。

今回はこの表をHTMLにする。 ExcelやOpenOfficeからコピペすると、タブ文字がセパレータになった状態になっている。
ギーク名    得意技
miyagawa    それプラ
tokuhirom   patches welcome
xaicron lang:mattn
hasegawayosuke  xss
cho45   gerry++
まずこのタブ文字を区切り文字としてTDタグの終わりと、次のTDタグの開始を埋める。Vimの置換ではタブ文字は \t と表現する。
:%s !,!!g
とタイプする。これは簡単。すると
ギーク名得意技
miyagawaそれプラ
tokuhirompatches welcome
xaicronlang:mattn
hasegawayosukexss
cho45gerry++
こうなる。ちなみにVimの s コマンドはsの次に1文字空白を入れるとその次の文字が置換のセパレータになるのでかぶらない文字を使うと良い。
次に先頭にTRおよびTDの開始タグ、行末にそれらの閉じタグを入れよう。ついでにインデントもしよう。
:%s !.*!
\r\t &
\r
!g
正規表現 .*で行全体を表して置換対象とする。& はその置換対象文字列に相当するので両側にそれぞれのタグおよび改行とタブ文字を入れた。
注意1: &を置換文字列にするには\&とする。エスケープしなくても良い方法もある。)
注意2: Vimの置換では改行コードは CTRL-V CTRL-M で挿入される ^M を使っても良いが、\r でも同じ結果が得られる。

     ギーク名
得意技

     miyagawa
それプラ

     tokuhirom
patches welcome

     xaicron
lang:mattn

     hasegawayosuke
xss

     cho45
gerry++

中にはTDは縦並びがお好みの人もいるだろう。そんな人には
:%s ![^\t]\zs\zetable[border=1]
と入力すれば

  
  

  
  
    ギーク名
    得意技
  
  
    miyagawa
    それプラ
  
  
    tokuhirom
    patches welcome
  
  
    xaicron
    lang:mattn
  
  
    hasegawayosuke
    xss
  
  
    cho45
    gerry++
  
  
  

できあがり。簡単ですね。
手順はもっと短くできるし、それ専用のスクリプトを書けばいくらでも簡単にはなる。僕が言いたいのは、どんな入力データに対しても、求められる出力形式への置換方法さえしっていれば誰でもこういう編集が出来るということ。その為の道具としてvi/vimはおそらく無二のツールだと信じている。 http://j.mp/vRTVwh

3リアクション

  1. kawagoemattnからリブログしました
  2. mattnの投稿です