Xóa dữ liệu từ giữa tệp nhị phân với chế độ hexl


12

Tôi có một tệp nhị phân khá lớn (vài chục MB) và muốn xóa một vài KB ở giữa, đó là dữ liệu được kẹp không phải là bắt đầu hay kết thúc.

Lý tưởng nhất là tôi muốn sử dụng emacs và chế độ hexl dường như là một ứng cử viên có khả năng.

Có thể xóa một dòng từ bộ đệm hexl? Ctrl- kdường như không làm công việc. Tôi rất vui khi xem mã nhưng vì bất kỳ lý do gì tìm kiếm hexl-mode.el, tất cả những gì tôi tìm thấy là tệp .elc được biên dịch trên máy Ubuntu 10.04 của tôi Emacs 23.1.

Ngoài ra: trong một động thái lén lút tôi muốn thêm một câu hỏi chế độ hexl khác không liên quan trực tiếp đến câu hỏi như câu trong tiêu đề nhưng là một phần của vấn đề hoàn chỉnh mà tôi gặp phải: Nó sẽ rất hữu ích cho tôi nếu Tôi có thể hiển thị các ký tự thập lục phân X trên mỗi dòng trong đó X rõ ràng thay đổi theo định dạng của tệp nhị phân tôi đang chỉnh sửa, tôi không thể tìm ra cách nào để làm điều đó với chế độ hexl và nghĩ rằng tôi sẽ ném câu hỏi vào đây.

Câu trả lời:


9

Chế độ hexl không cho phép bạn xóa các ký tự. Câu trả lời này từ tràn ngăn xếp gợi ý một cách giải quyết: ghi đè các ký tự bạn muốn xóa bằng một ký tự khác (giả sử "X"), chuyển khỏi chế độ hexl, tìm các ký tự và xóa chúng ở đó.


3

Sử dụng chế độ nhexl (có thể được cài đặt dưới dạng gói từ ELPA). Chế độ Nhexl là chế độ nhỏ; văn bản vẫn có thể chỉnh sửa trong chế độ chính mà bộ đệm đã có.

Theo mặc định, chế độ nhexl kích hoạt chế độ ghi đè, nhưng bạn vẫn có thể xóa. Để chèn văn bản, hãy tắt chế độ ghi đè bằng M-x binary-overwrite-mode.

Bạn có thể đặt đoạn mã sau vào tệp init ( ~/.emacs) để liên kết Insertkhóa để chuyển chế độ ghi đè ở chế độ 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)

Điều này cũng có thể được quan tâm nếu bạn sử dụng chế độ nhexl.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.