vimでバイナリファイルを扱う
提供: neovim/vim入門
スポンサーリンク
vimでバイナリファイル(binary file)を表示、編集する方法を説明します。
読み方
- バイナリファイル
- ばいなりふぁいる
- binary file
- ばいなりふぁいる
目次
概要
バイナリアンはバイナリを見たり、編集したりする種族のことです。
vimでバイナリを見たり、編集したりするには、バイナリファイルとテキストを変換するコマンドやpythonインターフェースなどを使用します。
- hex-editing using-xxd
- vinarise.vim
display=uhex
プリンタブルではない文字を16進数形式で表示する例です。それっぽく、表示する例です。
:set display=uhex
今開いてるファイルをxxdで16進表示にする
xxdコマンドは、16進数でダンプするツールです。 今開いているファイルをxxdで16進数表示できます。
ファイルをバイナリモードで開きます。
% vim -b /bin/ls
あとから、バイナリモードに移行するには、以下のコマンドを実行します。
:set binary
xxdで16進数ダンプに変換します。
:%!xxd
しかし、これだと編集しても保存できません。 編集後に元の形式に戻すと保存できます。
:%!xxd -r
hex-editing using-xxd
これは、vimのユーザマニュアル(help)からの抜粋です。
16進編集 hex-editing using-xxd ユーザーマニュアルの23.4を参照してください。 もしそのファイルがバイナリファイル特有の拡張子(exe、binなど)をしているときは、 あなたの<.vimrc>に次のオートコマンドを加えることで、変換の過程を自動化しておく こともできます。"*.bin" をあなたの編集したいファイルの拡張子の、カンマで区切ら れたリストに変えてください:
$HOME/.vimrc の設定です。
" vim -b : edit binary using xxd-format! augroup Binary au! au BufReadPre *.bin let &bin=1 au BufReadPost *.bin if &bin | %!xxd au BufReadPost *.bin set ft=xxd | endif au BufWritePre *.bin if &bin | %!xxd -r au BufWritePre *.bin endif au BufWritePost *.bin if &bin | %!xxd au BufWritePost *.bin set nomod | endif augroup END
この例では、拡張子が .bin のものが自動的に適用されます。
vinarise.vim
vinarise.vimは、Python インターフェースを必要とします。
.vimrc
NeoBundle 'Shougo/vinarise.vim'
インストール
:NeoBundleInstall
バイナリファイルの開き方
:Vinarise binary.bin
vinaraise バッファ をビットマップビュー表示します。
:VinarisePluginViewBitmapView
objdumpファイルの開き方
:VinariseDump objdump.obj
キーバインド
基本的に、vimのバインド通りです。
キー | 説明 |
---|---|
V | バイナリファイルを開き直す。 |
q | 開いてるファイルを閉じる。 |
メモ
なぜか、未知の関数といわれる。
:VinariseDump /bin/ls E117: 未知の関数です: vinarise#dump#open
関連項目
ツイート
スポンサーリンク