バイナリーファイルを編集する特別なメジャーモードに、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モードで重要なその他コマンドです:
10進でタイプされたバイトコードを挿入します。
8進でタイプされたバイトコードを挿入します。
16進でタイプされたバイトコードを挿入します。
512バイトページの先頭に移動します。
512バイトページの最後に移動します。
1Kバイトページの先頭に移動します。
1Kバイトページの最後に移動します。
16進で指定されたアドレスに移動します。
10進で指定されたアドレスに移動します。
Hexlモードを抜けて、hexl-mode
モードを呼び出す前の、このバッファーのメジャーモードに戻ります。
他のHexlコマンドには、バイナリーバイトの文字列(シーケンス)の挿入、short
、int
単位での移動などがあります。詳細については、C-h
a hexl- TABとタイプしてください。
Hexlモードをテキストファイルの編集にも使えます。これはテキストファイルに変わった文字が含まれていたり、変わったエンコーディング(コーディングシステムを参照)が使用されている場合に便利かもしれません。この目的用にバイトを挿入するHexlコマンドはASCII文字、およびマルチバイト文字を含む非ASCII文字も挿入できます。Hexlでテキストファイルを編集するには通常通りにファイルをvisitしてから、M-x hexl-mode RETとタイプしてHexlモードに切り替えます。これでテキスト文字をタイプして挿入することができます。しかし無効なマルチバイトシーケンスを作成する危険を避けるために、マルチバイト文字の挿入には特別な配慮が必要です。ファイル中のマルチバイトシーケンスの開始バイトにポイントがあるときに、そのような文字のタイプを開始する必要があります。