vimでバイナリファイルを扱う

提供: neovim/vim入門
2014年5月1日 (木) 22:35時点におけるDaemon (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

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のバインド通りです。

vinarise.vim キーバインド
キー 説明
V バイナリファイルを開き直す。
q 開いてるファイルを閉じる。

メモ

なぜか、未知の関数といわれる。

:VinariseDump /bin/ls
E117: 未知の関数です: vinarise#dump#open

関連項目




スポンサーリンク