Eu tenho um arquivo binário bastante grande (algumas dezenas de MB) e gostaria de remover alguns KB em algum lugar no meio, 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- knão parece fazer o trabalho. Fico feliz em olhar o código, mas por alguma razão procurando por hexl-mode.el tudo que encontro é o arquivo .elc compilado em minha máquina Ubuntu 10.04 Emacs 23.1.
Além disso: em um movimento sorrateiro, gostaria de adicionar outra pergunta no modo hexl que não está diretamente relacionada à pergunta 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 com o modo hexl e pensei em lançar a questão aqui.
Responder1
O modo Hexl não permite excluir caracteres.Esta respostafrom stack overflow 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á.
Responder2
Usarmodo nhexl(que pode ser instalado como um pacote do ELPA). O modo Nhexl é um modo secundário; 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 à alternância do modo 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)
Essetambém pode ser interessante se você usar o modo nhexl.