Kurzversion: Kann ich Emacs zeigen lassen \ff
oder \xff
statt \377
?
Lange Version: Angenommen, Sie öffnen eine Datei, die nicht vollständig aus Text besteht und einige Binärdaten enthält (z. B. eine PostScript- oder PDF-Datei). Angenommen, Sie öffnen die GNU Emacs-Referenzkarte (PDF) .
Für Bytes außerhalb des druckbaren ASCII-Bereichs (32–126)
- Emacs zeigt die "hohen" Bytes (Bytes mit den Werten 128 bis 255) als oktale Escape-Sequenzen: 128 wird angezeigt als
\200
, 129 wird angezeigt als\201
, ..., 255 wird angezeigt als\377
. - Emacs zeigt die Bytes 0 bis 31 (außer Byte 9, das nicht als Tabulator angezeigt wird
^I
, und Byte 10, das als Zeilenumbruch nicht angezeigt wird^J
) als Caret, gefolgt von dem Zeichen, das 64 voraus ist: Byte 0 wird als^@
Byte angezeigt 1 wird gezeigt als^A
,…, Byte 26 wird gezeigt als^Z
, Byte 27 wird gezeigt als^[
,…, Byte 31 wird gezeigt als^_
. Außerdem zeigt Emacs Byte 127 als^?
.
Ich weiß, dass der Grund, warum Emacs Oktal zeigt, historisch ist: Irgendwann vor einigen Jahrzehnten wurde Oktal häufiger verwendet. ( man ascii
Beginnt beispielsweise zuerst mit Oktal und TeX unterstützt Oktal-Escape-Sequenzen.) Da Oktal heutzutage weniger nützlich als Hexadezimal ist (z. B. zum Vergleich mit der Ausgabe von hexdump
oder Python-Byte-String-Darstellungen), würde ich gerne Hexadezimal sehen Escape-Sequenzen. Wie kann ich das ändern?
(Hinweis: Die oktalen Escape-Sequenzen werden hervorgehoben angezeigt, anstatt wie normaler Text auszusehen, und es ist natürlich nicht möglich, in das Escape-Zeichen "einzusteigen" (dh wenn Sie auf den Punkt treffen C-f
, bevor \343
Sie zum Punkt danach gelangen \343
), möchte ich um dies beizubehalten.)
quelle
Bearbeiten : Mit Emacs 26.1 oder höher ist es
(setq display-raw-bytes-as-hex t)
weg.Nein, das kannst du nicht. Die Anzeige von nicht druckbaren Dateien über dem druckbaren ASCII-Bereich ist fest codiert in
xdisp.c
:Ich habe einen Patch gesendet, der dies bei Debbugs behebt .
quelle
Ich habe es dank der Antwort von Gilles und des Threads 2010/2011 mit dem
gnu.emacs.help
Titel "Wie kann ich von einem Code mit Escape-Oktalzeichen zu Escape-HEX wechseln?" Herausgefunden. ( Google Groups , Nabble ).Einzelheiten zur Anzeige von Zeichen in Emacs finden Sie im Abschnitt Anzeige> Textanzeige („Wie Text angezeigt wird“) des Emacs-Handbuchs ( C-h r) und im Abschnitt Anzeige> Zeichenanzeige des Emacs Lisp-Referenzhandbuchs. Sie müssen die Anzeigetabelle für die Zeichen 128 bis 255 ändern (und alle anderen Zeichen, die als hexadezimale Escapezeichen angezeigt werden sollen).
Ich musste zwei kleine Änderungen an der Antwort von Gilles vornehmen:
Anstelle von so etwas
Ich musste so etwas benutzen
Die Einstellung reicht
standard-display-table
nicht immer aus, da einige Modi (wieglobal-whitespace-mode
) dies möglicherweise durcheinander bringen. Und dann scheint es, dass Siebuffer-display-table
stattdessen einstellen müssen .Also habe ich stattdessen eine interaktive Funktion erstellt, die ich aufrufen kann, wenn sich die Anzeige in einem bestimmten Puffer ändern soll.
Wenn ich damit öffne
refcard.pdf
und starte M-x use-hex-not-octal, erhalte ich Folgendes für dieselbe Region wie in der Frage:quelle
Der Hexl-Modus von Emacs sollte das tun, was Sie wollen - es ist ein Hauptmodus, der Unterstützung für das Anzeigen und Bearbeiten von Binärdateien bietet. Verwenden Sie Mx hexl-find-file anstelle von Cx Cf, um die Datei aufzurufen und loszulegen. Weitere Informationen finden Sie im Emacs-Info-Handbuch oder unter https://www.gnu.org/software/emacs/manual/html_node/emacs/Editing-Binary-Files.html .
quelle