É possível procurar uma sequência de bytes hexl-mode
e possivelmente destacá-la?
Por exemplo, no arquivo abaixo, quero pesquisar a sequência de bytes f9beb4d9
. isearch
não funciona porque pesquisa a apresentação no buffer e não no arquivo original.
00000000: f9be b4d9 1d01 0000 0100 0000 0000 0000 ................
00000010: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000020: 0000 0000 0000 0000 0000 0000 3ba3 edfd ............;...
00000030: 7a7b 12b2 7ac7 2c3e 6776 8f61 7fc8 1bc3 z{..z.,>gv.a....
00000040: 888a 5132 3a9f b8aa 4b1e 5e4a 29ab 5f49 ..Q2:...K.^J)._I
00000050: ffff 001d 1dac 2b7c 0101 0000 0001 0000 ......+|........
00000060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
Respostas:
Se você usar
nhexl-mode
(disponível a partir de sua vizinhança arquivo GNU ELPA), então você pode fazerC-s f9beb4d9
e vai procurar a seqüência de 4 bytes com os códigosf9
be
b4
d9
(bem como para os 8 bytes de textof9beb4d9
claro, e também os bytes de endereços que incluemf9beb4d9
em sua representação hexadecimal).fonte
M-x report-emacs-bug
fornecendo o máximo de detalhes possível (um URL para um arquivo grande de amostra também pode ser útil, pois o desempenho pode ser significativamente afetado pelo conteúdo do arquivo).O código lisp a seguir coloca uma entrada "Hexl Isearch Mode" no menu "Hexl".
Esse item de menu (des-) ativa o modo secundário
hexl-isearch-mode
. Se você ativar esse modo,isearch
procurará nos dados binários em vez do buffer hexl.A cadeia de pesquisa é lida com
read
. Portanto, todas as seqüências de escape para strings lisp funcionam. Como exemplo, você pode procurar\x0a\x0d
ou\^M\n
pesquisar por finais da linha dos.O código não é perfeito.
Digamos que você pesquise uma string
ELF\x01
que só ocorra no início de um arquivo. Além disso, suponha que exista uma stringELf\x00
posteriormente no binário. Então, quando vocêELF\x0
digitar o Emacs, encontrará a correspondência posterior e, se continuar digitando, oELF\x01
Emacs acha que não há ocorrências dessa string, porque ela já chegou aoELF\x0
que vem depois no arquivoELF\x01
. Vale a pena fazer uma pesquisa sobreposta nesse caso. (Esse problema já foi corrigido na versão git do pacote .)Somente a sequência de bytes é iluminada corretamente no buffer hexl, e não na representação de string no lado direito.
Se a cadeia de pesquisa se estender por duas linhas no buffer hexl, a representação da cadeia no final da linha e o endereço no início da linha também serão destacados. Isso não ocorre porque eles pertencem à correspondência, mas porque eles estão no caminho ao destacar a sequência de bytes.
fonte