vim-breakline という Vim プラグインを書いた

https://github.com/hiroakis/vim-breakline を書いた。

金融関連のデータ、特に俺が扱っている決済のデータは Internet facing ではない場所ではバイナリでやりとりがされる。そのバイナリをパースして人間語にしたり、金額を取り出したりして決済の業務ロジックを組むのだが、パース前のデータを用意してテストコードを書く際に、テスト環境のバイナリデータをキャプチャして16進ダンプを取得する、Goのバイト配列に変換する、体裁を整える…という作業をやったりしていて、まあこれがしんどい。ので、いいかげんツール化しようと思って書いた。

README に書いたとおりだが、こんな16進数があるとして、

0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021

まずは bb コマンド (こちらも拙著: https://github.com/hiroakis/bb)で Go のバイト配列に変換する。これも Vim 上でできる。

bindata := []byte{0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c,
 0x1d, 0x1e, 0x1f, 0x20, 0x21}

そして対象を選択して breakline の :Break , 4 で4つずつ改行を入れる

bindata := []byte{0x01, 0x02, 0x03, 0x04,
 0x05, 0x06, 0x07, 0x08,
 0x09, 0x0a, 0x0b, 0x0c,
 0x0d, 0x0e, 0x0f, 0x10,
 0x11, 0x12, 0x13, 0x14,
 0x15, 0x16, 0x17, 0x18,
 0x19, 0x1a, 0x1b, 0x1c
 0x1d, 0x1e, 0x1f, 0x20,
 0x21}

といったことができる。ニッチなプラグインかもしれないが俺の作業はだいぶ楽になった。

おわり


© 2020 Ore no homepage