Linux や BSD でのバイナリファイルの取り扱い
普段使いしている Ubuntu や FreeBSD 上でファイルを編集したいときに、ちょっとしたバイナリエディタが欲しいなと思うことがあります。
両プラットフォーム上では膨大な数のアプリケーションが開発され流通していますが、バイナリデータの取り回しの環境は意外に整っていません。
使える手段
基本的なツールでは、データ内容確認には od や hexdump -C くらいしかなく、これはダンプリストに対応する文字はASCIIしか表示できません。
テキストファイルにごく少量のバイナリデータが混じるという程度なら、vim -b がありますが、これはテキスト以外のデータでもなんとか破壊せずに編集可能になるというだけで、本格的な利用は現実的ではありません。
vim -b で開いたファイルを、:%!xxd でダンプリストに変換し、編集後に%!xxd -rで元に戻すという方法があります。この場合はデータを16進数で取り扱うことが出来ます。しかしデータの上書き編集が出来るのみで、挿入・削除は出来ません。
vi や Vim ユーザ向け
私は Vim ユーザなので、vi / Vim の使い勝手を備えたバイナリエディタを探しました。いくつか見つかったのですが、試作品のレベルを超えているものはほとんどありません。
なんとか実用出来るのは、bvi (https://bvi.sourceforge.net/) くらいでした。
これは少し使い込んでみたのですが、vi の使い勝手を決めているキー割り当ては一部 ( h j k l など) しか設定されておらず、^F/^B, ^D/^U, ^E/^Y などは使えませんでした。メモリサイズを超える大きなファイルの取り扱いも、ファイルの一部だけを読み書きする操作が必要であまり得意ではありません。
一番残念なのは、 undo が 1回しか出来ないことです。
自分でバイナリエディタを作りました
仕方がないので自分で作りました。
hxavi : vi と Vim ユーザのためのバイナリエディタです。
ソースファイル一式やバイナリパッケージがダウンロード出来ます。
画面の例です。
操作方法が vi / Vim とほぼ同じですぐに使えるようになる
カーソルの移動や画面のスクロールなどのキー割り当ては vi,Vim とほぼ同じに作っていますで、学習コストが低く、すぐに使えるようになると思います。
大抵のターミナル上で動作するテキストアプリである
utf-8 の文字が表示できる環境であれば動作するので大抵のターミナルで使えます。
オープンソースで利用・改造が自由
いわゆる、2項BSDライセンスで提供します。利用・改造は自由です。
Linux / BSD で使える
Ubuntu と FreeBSD で動作確認をしています。標準以外のリソースとしては、ncursesライブラリを使っているだけなので、ほかのLinuxディストリビューションや ほかの *BSD でもあまり苦労なく動くのではないかと思います。
16進数とテキストで編集(挿入・削除・追記・上書き)が出来る
当然、16進数でのバイナリデータの操作が出来ますし、テキストデータの扱いも可能です。テキストデータは各種のエンコーディングに対応しています。
undo / redo が無制限に出来る
メモリの残量がある限り undo / redo を回数無制限に実行可能です。
巨大ファイルも編集出来る
オプションを付けて起動することで、空きメモリのサイズを超える大きさのファイルも割と軽快に編集出来ます。(但しこの場合は、挿入・削除・追記は出来ず、上書きのみ可能となります。大きなファイルだとそれに比例してサーチには時間がかかります。)
フィードバックを頂ければ…
最初は、自分が困っていてアドホックに作ったものでしたが、少しずつ機能をつけ足していき、かなり形が整ってきたので公開することにしました。
大きなアプリケーションではないので具備している機能は大したことはありませんが、それなりに実用性はあると思います。
vi / Vim ユーザの方に試用していただいて、フィードバックをもらえればうれしいです。