Primeiro, caso você não saiba, o Emacs possui hexl-find-file
, o que abre um arquivo no modo de edição hexadecimal. Eu sei que não é o que você pediu, mas se você já está usando um, e você está confortável com o Emacs, então é bom saber sobre isso para necessidades futuras.
Segundo, para este tipo de edição "raw" de um arquivo (o que costumo fazer com frequência), find-file-literally
é realmente ótimo. Ele faz o que você espera que ele faça, e finge ser uma versão pré-unicode de si mesmo e abre o arquivo com escapes aparecendo para caracteres não-ascii (e controlando chars, etc.). É provável que isso faça o que você quer, embora tenha a desvantagem óbvia de não ser capaz de ler o texto se você tiver muito conteúdo não-ASCII.
Então, indo mais longe no suporte primitivo, há a variável enable-multibyte-characters
e a função set-buffer-multibyte
que é usada para alterná-lo. O bom disso é que ele muda a apresentação do buffer dinamicamente - por exemplo, tente isto:
(defun my-multi-toggle ()
(interactive)
(set-buffer-multibyte (not enable-multibyte-characters)))
(global-set-key (kbd "C-~") 'my-multi-toggle)
e agora você tem uma chave que alterna o modo bruto dinamicamente. Ele também tem a boa propriedade de deixar o cursor no mesmo lugar. Mas este modo bruto mostra a representação interna (que se parece com o UTF-8) e não o que o arquivo esteja usando como codificação. Deve ser possível fazer o que você está falando com algum hack (por exemplo, usar find-file-literally
em um arquivo aberto perguntará sobre revisitar, mas isso redefine o local e recarrega o arquivo também) - mas soa como o acima já está bem. (Isto é, meu palpite é que você está tentando editar algum campo de texto em um arquivo binário de outra forma ...)