ลบข้อมูลออกจากตรงกลางของไฟล์ไบนารีด้วยโหมด hexl


10

ฉันมีไฟล์ไบนารีขนาดใหญ่พอสมควร (ไม่กี่สิบ MB) และต้องการลบไม่กี่ KB ที่อยู่ตรงกลางมันเป็นข้อมูลแซนวิชไม่ใช่จุดเริ่มต้นหรือจุดสิ้นสุด

เป็นการดีที่ฉันต้องการใช้ emacs และ hexl-mode ดูเหมือนจะเป็นตัวเลือกที่น่าสนใจ

เป็นไปได้ไหมที่จะลบหนึ่งบรรทัดจากบัฟเฟอร์ฐานสิบหก? Ctrl- kดูเหมือนจะไม่ทำงาน ฉันยินดีที่จะดูรหัส แต่ด้วยเหตุผลใดก็ตามที่กำลังมองหา hexl-mode.el ทั้งหมดที่ฉันพบคือไฟล์. elc ที่รวบรวมไว้ใน Ubuntu 10.04 เครื่องของฉัน Emacs 23.1

นอกจากนี้: ในการย้ายลับๆล่อๆฉันต้องการเพิ่มคำถาม hexl-mode อีกคำถามที่ไม่เกี่ยวข้องโดยตรงกับคำถามที่เป็นวลีในชื่อ แต่เป็นส่วนหนึ่งของปัญหาทั้งหมดที่ฉันเผชิญ: มันจะมีประโยชน์มากสำหรับฉันถ้า ฉันสามารถแสดงตัวอักขระฐานสิบหก X ต่อบรรทัดโดยที่ X เปลี่ยนแปลงอย่างชัดเจนกับรูปแบบของไฟล์ไบนารีที่ฉันกำลังแก้ไขฉันไม่สามารถหาวิธีที่จะทำได้ด้วยโหมดฐานสิบหกและคิดว่าฉันจะทิ้งคำถามไว้ที่นี่

คำตอบ:


7

โหมด Hexl ไม่อนุญาตให้คุณลบอักขระ คำตอบจากการล้นสแต็กนี้แนะนำวิธีแก้ปัญหา: เขียนทับอักขระที่คุณต้องการลบด้วยอักขระอื่น (พูดว่า "X"), เปลี่ยนจากโหมด hexl, ค้นหาอักขระและลบออก


2

ใช้โหมด nhexl (ซึ่งสามารถติดตั้งเป็นแพ็คเกจจาก ELPA) Nhexl-mode เป็นโหมดรอง ข้อความยังคงสามารถแก้ไขได้ในโหมดหลักที่บัฟเฟอร์มีอยู่แล้ว

ตามค่าเริ่มต้นโหมด nhexl จะเปิดใช้งานโหมดเขียนทับ แต่คุณยังสามารถลบได้ แทรกข้อความ, M-x binary-overwrite-modeปิดโหมดเขียนทับด้วย

คุณสามารถวางโค้ดต่อไปนี้ในไฟล์ init ของคุณ ( ~/.emacs) เพื่อผูกInsertคีย์เพื่อสลับโหมดการเขียนทับในโหมด 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)

สิ่งนี้อาจเป็นที่สนใจหากคุณใช้โหมด nhexl

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.