Next: , Previous: , Up: The Emacs Editor   [Contents][Index]


43 バイナリーファイルの編集

バイナリーファイルを編集する特別なメジャーモードに、Hexlモードがあります。これを使用するには、ファイルをvisitするためにC-x C-fのかわりに、M-x hexl-find-fileを使用します。このコマンドはファイル内容を16進に変換して、その変換結果を編集できるようにします。ファイルを保存するときは、自動的にバイナリーに変換されます。

既存のバッファーを16進(hex)に変換するために、M-x hexl-modeを使用することもできます。これは普通にファイルをvisitしてから、それがバイナリーファイルだと気づいた場合などに便利です。

Hexlモードでは、テキスト挿入は常に上書きとなります。これは、アクシデントによりファイル内データのアラインメントを破壊する危険を軽減します。通常のテキスト文字は、それらの文字自身をを挿入(それらの文字で上書き)します。文字コードにより特殊文字を挿入するコマンドあります。Hexlモードでは、ほとんどのカーソル移動キー、同様にC-x C-sは、同じ効果を生むコマンドにバインドされています。以下は、特にHexlモードで重要なその他コマンドです:

C-M-d

10進でタイプされたバイトコードを挿入します。

C-M-o

8進でタイプされたバイトコードを挿入します。

C-M-x

16進でタイプされたバイトコードを挿入します。

C-M-a

512バイトページの先頭に移動します。

C-M-e

512バイトページの最後に移動します。

C-x [

1Kバイトページの先頭に移動します。

C-x ]

1Kバイトページの最後に移動します。

M-g

16進で指定されたアドレスに移動します。

M-j

10進で指定されたアドレスに移動します。

C-c C-c

Hexlモードを抜けて、hexl-modeモードを呼び出す前の、このバッファーのメジャーモードに戻ります。

他のHexlコマンドには、バイナリーバイトの文字列(シーケンス)の挿入、shortint単位での移動などがあります。詳細については、C-h a hexl- TABとタイプしてください。

Hexlモードをテキストファイルの編集にも使えます。これはテキストファイルに変わった文字が含まれていたり、変わったエンコーディング(コーディングシステムを参照)が使用されている場合に便利かもしれません。この目的用にバイトを挿入するHexlコマンドはASCII文字、およびマルチバイト文字を含む非ASCII文字も挿入できます。Hexlでテキストファイルを編集するには通常通りにファイルをvisitしてから、M-x hexl-mode RETとタイプしてHexlモードに切り替えます。これでテキスト文字をタイプして挿入することができます。しかし無効なマルチバイトシーケンスを作成する危険を避けるために、マルチバイト文字の挿入には特別な配慮が必要です。ファイル中のマルチバイトシーケンスの開始バイトにポイントがあるときに、そのような文字のタイプを開始する必要があります。