在Emacs中突出显示并替换不可打印的unicode字符

Chr*_*ian 7 unicode emacs

我有一个UTF-8文件包含一些Unicode字符,如LEFT-TO-RIGHT OVERRIDE(U + 202D),我想从文件中删除它.在Emacs中,它们是隐藏的(应该是正确的行为?).如何使这种"异国情调"的unicode字符可见(同时不改变"常规"unicode字符的显示,如德语变音符号)?以后我如何替换它们(replace-string例如.C-X 8 Ret对isearch /不起作用replace-string).

在Vim中,它非常简单:这些字符默认显示为十六进制表示(这是一个错误或缺少的功能吗?),您可以轻松地删除它们:%s/\%u202d//g.这应该可以用Emacs吗?

Ole*_*liv 9

你可以这样做,M-x find-file-literally你会看到这些字符.

然后你可以使用平常删除它们 string-replace


Sea*_*ean 6

这个怎么样:

通过键入将要匹配的 U+202d 字符放在终止环的顶部M-:(kill-new "\u202d")。然后,您可以使用C-y(eg. query-replace) 或M-y(eg. isearch-forward)将该字符串拖入各种搜索命令中。

(编辑添加:)

您也可以仅以非交互方式调用命令,这不会出现与交互式调用相同的键盘输入困难。例如,键入M-:然后:

(replace-string "\u202d" "")
Run Code Online (Sandbox Code Playgroud)

这有点类似于您的 Vim 版本。一个区别是它只执行从光标位置到文件底部(或缩小区域)的替换,因此您需要在运行命令以替换所有内容之前转到文件顶部(或缩小区域)火柴。