hexl 모드를 사용하여 이진 파일의 중간에서 데이터 삭제


13

상당히 큰 이진 파일 (수십 MB)이 있고 중간에 어딘가에 몇 KB를 제거하고 싶습니다. 시작이나 끝이 아닌 샌드위치 된 데이터입니다.

이상적으로는 이맥스를 사용하고 싶습니다. hexl-mode는 가능한 후보로 보입니다.

hexl 버퍼에서 한 줄을 삭제할 수 있습니까? Ctrl-일을 k하지 않는 것 같습니다. 나는 코드를보고 행복하지만 hexl-mode.el을 찾는 어떤 이유로 든 내가 찾은 모든 것은 내 우분투 10.04 시스템 Emacs 23.1에서 컴파일 된 .elc 파일입니다.

또한 : 교활한 움직임에 제목에 표시된 질문과 직접 ​​관련이 없지만 내가 직면 한 완전한 문제의 일부인 다른 hexl 모드 질문을 추가하고 싶습니다. 편집중인 이진 파일의 형식에 따라 X가 분명히 바뀌는 한 줄에 X 16 진수 문자를 표시 할 수 있습니다 .hexl 모드로 그렇게 할 수있는 방법을 찾지 못하고 여기에 질문을 던질 것이라고 생각했습니다.

답변:


9

Hexl 모드에서는 문자를 삭제할 수 없습니다. 스택 오버플로 의이 답변 은 해결 방법을 제안합니다. 다른 문자 (예 : "X")로 삭제하려는 문자를 덮어 쓰고, hexl 모드에서 전환 한 다음 문자를 찾아 삭제하십시오.


4

nhexl 모드를 사용하십시오 (ELPA에서 패키지로 설치할 수 있음). Nhexl 모드는 부 모드입니다. 버퍼가 이미 있었던 주요 모드에서 텍스트를 편집 할 수 있습니다.

기본적으로 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.