Ist es möglich, nach einer Bytefolge zu suchen hexl-mode
und diese möglicherweise hervorzuheben?
ZB in der Datei unten möchte ich die Bytesequenz durchsuchen f9beb4d9
. isearch
funktioniert nicht, da die Präsentation im Puffer und nicht in der Originaldatei durchsucht wird.
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 ................
Antworten:
Wenn Sie verwenden
nhexl-mode
(verfügbar in Ihrem nachbarschaftlichen GNU ELPA-Archiv), können Sie dies tunC-s f9beb4d9
und es wird nach der Folge von 4 Bytes mit Codes gesuchtf9
be
b4
d9
(sowief9beb4d9
natürlich nach dem 8-Bytes-Text und auch nach den Bytes an Adressen, dief9beb4d9
in enthalten sind) ihre hexadezimale Darstellung).quelle
M-x report-emacs-bug
indem Sie so viele Details wie möglich angeben (eine URL zu einer großen Beispieldatei kann ebenfalls nützlich sein, da die Leistung durch den Inhalt der Datei erheblich beeinträchtigt werden kann).Der folgende Lisp-Code fügt einen Eintrag "Hexl Isearch Mode" in das Menü "Hexl" ein.
Dieser Menüpunkt (de-) aktiviert den Nebenmodus
hexl-isearch-mode
. Wenn Sie diesen Modus aktivieren,isearch
suchen Sie in den Binärdaten anstelle des Hexl-Puffers.Die Suchzeichenfolge wird mit gelesen
read
. Alle Escape-Sequenzen für Lisp-Strings funktionieren also. Als Beispiel können Sie nach Dos-Zeilenenden suchen\x0a\x0d
oder\^M\n
diese suchen.Der Code ist nicht perfekt.
Angenommen, Sie suchen nach einer Zeichenfolge,
ELF\x01
die nur am Anfang einer Datei vorkommt. Angenommen, es gibtELf\x00
später eine Zeichenfolge in der Binärdatei. Wenn Sie dannELF\x0
mit der Eingabe von Emacs ankommen, werden Sie die spätere Übereinstimmung finden, und wenn Sie mit der EingabeELF\x01
fortfahren, glaubt Emacs, dass diese Zeichenfolge nicht vorkommt, da sie bereits angekommen ist undELF\x0
später in der Datei alsELF\x01
. In einem solchen Fall lohnt es sich, eine überlappende Suche durchzuführen. (Dieses Problem ist bereits in der Git-Version des Pakets behoben .)Nur die Bytesequenz wird im Hexl-Puffer korrekt hervorgehoben, nicht die Zeichenfolgendarstellung auf der rechten Seite.
Wenn sich die Suchzeichenfolge über zwei Zeilen im Hexl-Puffer erstreckt, werden auch die Zeichenfolgendarstellung am Zeilenende und die Adresse am Zeilenanfang hervorgehoben. Das liegt nicht daran, dass sie zur Übereinstimmung gehören, sondern daran, dass sie beim Hervorheben der Bytesequenz im Weg sind.
quelle