![Emacs:使用十六进制转义序列显示](https://linux22.com/image/1389639/Emacs%EF%BC%9A%E4%BD%BF%E7%94%A8%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6%E8%BD%AC%E4%B9%89%E5%BA%8F%E5%88%97%E6%98%BE%E7%A4%BA.png)
Emacs 将不带字形的字符显示为八进制转义序列“\OOO”,例如从 PDF 文件的开头:
%PDF-1.4
%\344\343\317\322
1 0 obj
[/PDF/ImageB/ImageC/ImageI/Text]
endobj
4 0 obj
<</Length 5 0 R/Filter/FlateDecode>>
stream
9\323\317\221\321\356j\305
endstream
我可以设置一些(相对简单的)配置来获取十六进制转义序列“\xFF”吗?例如:
%PDF-1.4
%\xE4\xE3\xCF\xD2
1 0 obj
[/PDF/ImageB/ImageC/ImageI/Text]
endobj
4 0 obj
<</Length 5 0 R/Filter/FlateDecode>>
stream
9\xD3\xCF\x91\xD1\xEEj\xC5
endstream
(使用文本模式,或基本模式,或...但不是十六进制模式)
答案1
我以前从来没有玩过这个,但是阅读了一下 Elisp 手册并进行了实验后,我认为你正在寻找这样的东西:
(let ((ii 128)
(new-dtable (make-display-table))
(hex-string nil))
(while (< ii 256) ; Convert decimal codes 128 to 255.
(setq hex-string (format "%X" ii))
(aset new-dtable ii
(vector
(make-glyph-code ?\ 'escape-glyph)
(make-glyph-code ?x 'escape-glyph)
(make-glyph-code (aref hex-string 0) 'escape-glyph)
(make-glyph-code (aref hex-string 1) 'escape-glyph)))
(setq ii (1+ ii)))
(set-window-display-table (selected-window) new-dtable))
如果您随后使用,比如说C-q 3 4 4 RET
,通常会插入八进制转义序列\344
,它将插入一个显示 的字形xE4
。
我查看的 Elisp 手册的相关部分是 node 下的部分Character Display
。