GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Editing-Binary-Files.html ・ emacs-doc.conao3.com

45 バイナリファイルの編集

バイナリファイルを編集するための専用のメジャーモード「Hexlモード」があります。これを使用するには、C-x C-fの代わりにM-x hexl-find-fileを指定してファイルを開いてください。このコマンドはファイルの内容を16進数に変換し、その変換結果を編集できるようにします。ファイルを保存すると、自動的にバイナリ形式に戻されます。

また、M-x hexl-mode を使用して既存のバッファを16進数に変換することもできます。これは、通常通りにファイルを開いたところ、それがバイナリファイルであることが判明した場合に便利です。

Hexlモードでは、テキストの挿入は常に上書きされます。これは、ファイル内のデータの配置を誤って崩してしまうリスクを軽減するためです。通常のテキスト文字は、そのまま挿入されます(つまり、自身を上書きします)。特殊文字をコードで挿入するためのコマンドが用意されています。ほとんどのカーソル移動キーおよびC-x C-sは、Hexlモードにおいて同様の効果を持つコマンドに割り当てられています。以下に、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コマンドでは、バイナリバイトの文字列(シーケンス)の挿入や、shortまたはint単位での移動などが可能です。詳細はC-h a hexl- TABと入力してください。

Hexlモードはテキストファイルの編集にも利用できます。テキストファイルに特殊な文字が含まれていたり、特殊なエンコーディングが使用されていたりする場合に便利です(コーディングシステムを参照)。この目的のため、バイトを挿入するHexlコマンドでは、マルチバイト文字を含むASCII文字および非ASCII文字も挿入可能です。Hexlでテキストファイルを編集するには、通常通りファイルを開き、M-x hexl-mode RETと入力してHexlモードに切り替えます。これで、テキスト文字を入力して挿入できるようになります。ただし、マルチバイト文字を挿入する際は、無効なマルチバイトシーケンスが生成される危険を避けるため、特別な注意が必要です。具体的には、ポイントがファイル内のマルチバイトシーケンスの最初のバイトにある状態で、該当する文字の入力を開始してください。