hexl-modeでバイナリファイルの途中からデータを削除する


12

かなり大きなバイナリファイル(数十MB)があり、途中の数KBを削除したいのですが、データの最初と最後ではなく、サンドイッチになっています。

理想的には、emacsを使用したいのですが、hexl-modeが候補のようです。

hexlバッファーから1行を削除することは可能ですか?Ctrl- k仕事をしていないようです。私はコードを見てうれしいですが、何らかの理由でhexl-mode.elを探していますが、Ubuntu 10.04マシンEmacs 23.1でコンパイルされた.elcファイルしか見つかりません。

さらに、卑劣な動きで、タイトルに記載されている質問に直接関連していないが、私が直面している完全な問題の一部である別のhexlモードの質問を追加したいと思います。編集中のバイナリファイルの形式によってXが明らかに変わる行ごとにX 16進文字を表示できましたが、hexl-modeでそれを行う方法が見つからなかったので、ここで質問を投げます。

回答:


9

Hexlモードでは、文字を削除することはできません。スタックオーバーフローからのこの回答は、回避策を提案します。削除する文字を別の文字(たとえば「X」)で上書きし、hexlモードから切り替え、文字を見つけてそこで削除します。


3

nhexl-modeを使用します(ELPAからパッケージとしてインストールできます)。Nhexl-modeはマイナーモードです。テキストは、バッファーが既に存在するメジャーモードでも編集可能です。

デフォルトでは、nhexl-modeは上書きモードをアクティブにしますが、削除することもできます。テキストを挿入するには、で上書きモードをオフにしますM-x binary-overwrite-mode

次のコードスニペットをinitファイル(~/.emacsInsertに挿入して、キーをnhexl-modeで上書きモードの切り替えにバインドできます。

(unless (boundp 'nhexl-mode-map)
  (defvar nhexl-mode-map (make-sparse-keymap)
    "Keymap used when `nhexl-mode' is active."))
(define-key nhexl-mode-map [insert] 'binary-overwrite-mode)

これは、nhexl-modeを使用する場合にも重要です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.