Excluir dados do meio de um arquivo binário com modo hexl


12

Eu tenho um arquivo binário bastante grande (algumas dezenas de MB) e gostaria de remover alguns KB em algum lugar no meio, pois são dados imprensados, não o começo nem o fim.

Idealmente, eu gostaria de usar o emacs e o modo hexl parece um candidato provável.

É possível excluir uma linha do buffer hexl? Ctrl- kparece não fazer o trabalho. Estou feliz em olhar para o código, mas por qualquer motivo, procurando por hexl-mode.el, tudo o que encontro é o arquivo .elc compilado na minha máquina Ubuntu 10.04 Emacs 23.1.

Além disso: em uma jogada furtiva, eu gostaria de adicionar outra pergunta no modo hexl que não esteja diretamente relacionada à pergunta, como está formulada no título, mas faz parte do problema completo que estou enfrentando: seria muito útil para mim se Eu poderia exibir X caracteres hexadecimais por linha, onde X obviamente muda com o formato do arquivo binário que estou editando, não consegui encontrar uma maneira de fazer isso no modo hexl e pensei em fazer a pergunta aqui.

Respostas:


9

O modo hexl não permite excluir caracteres. Esta resposta do estouro de pilha sugere uma solução alternativa: substitua os caracteres que você deseja excluir por outro caractere (diga "X"), saia do modo hexl, encontre os caracteres e exclua-os lá.


3

Use o modo nhexl (que pode ser instalado como um pacote do ELPA). O modo Nhexl é um modo menor; o texto permanece editável no modo principal em que o buffer já estava.

Por padrão, o modo nhexl ativa o modo de substituição, mas você ainda pode excluir. Para inserir texto, desative o modo de substituição com M-x binary-overwrite-mode.

Você pode colocar o seguinte trecho de código em seu arquivo init ( ~/.emacs) para vincular a Insertchave ao modo de substituição de substituição no modo 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)

Isso também pode ser interessante se você usar o modo nhexl.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.