Hapus data dari tengah file biner dengan mode hexl

12

Saya memiliki file biner yang cukup besar (beberapa puluh MB) dan ingin menghapus beberapa KB di suatu tempat di tengah, itu data yang di-sandwich bukan awal atau akhir.

Idealnya saya ingin menggunakan emacs dan hexl-mode sepertinya kandidat.

Apakah mungkin untuk menghapus satu baris dari buffer hexl? Ctrl- ktampaknya tidak melakukan pekerjaan itu. Saya senang melihat kode tetapi untuk alasan apa pun mencari hexl-mode.el yang saya temukan adalah file .elc yang dikompilasi di mesin Ubuntu 10,04 saya Emacs 23.1.

Selain itu: dalam langkah licik saya ingin menambahkan pertanyaan hexl-mode lain yang tidak terkait langsung dengan pertanyaan seperti yang diungkapkan dalam judul tetapi merupakan bagian dari masalah lengkap yang saya hadapi: Ini akan sangat berguna bagi saya jika Saya dapat menampilkan karakter heksadesimal X per baris di mana X jelas berubah dengan format file biner yang saya edit, saya tidak dapat menemukan cara untuk melakukan itu dengan mode hexl dan saya pikir saya akan mengajukan pertanyaan di sini.

Mcradle
sumber

Jawaban:

9

Mode Hexl tidak memungkinkan Anda untuk menghapus karakter. Jawaban dari stack overflow ini menunjukkan solusi: timpa karakter yang ingin Anda hapus dengan karakter lain (katakanlah "X"), beralih dari mode hexl, cari karakter dan hapus di sana.

Anne
sumber
3

Gunakan mode nhexl (yang dapat diinstal sebagai paket dari ELPA). Mode-nhexl adalah mode minor; teks tetap dapat diedit dalam mode utama buffer sudah masuk

Secara default, mode nhexl mengaktifkan mode overwrite, tetapi Anda masih dapat menghapus. Untuk menyisipkan teks, matikan mode overwrite dengan M-x binary-overwrite-mode.

Anda dapat memasukkan potongan kode berikut di file init Anda ( ~/.emacs) untuk mengikat Insertkunci untuk beralih ke mode overwrite dalam mode nhexl.

(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)

Ini mungkin juga menarik jika Anda menggunakan mode nhexl.

Gilles 'SANGAT berhenti menjadi jahat'
sumber