Emacs 正则表达式中的 Unicode

Emacs 正则表达式中的 Unicode

我正在使用 emacs 24。

我怎样才能替换所有出现的不可打印的 Unicode 双向字符 RTL(其十六进制数为 )202e?我想用不可打印的 Unicode 双向字符 LTR(其十六进制数为 )替换它202d

有人可以给我一些指导吗?

答案1

这要求enable-recursive-minibuffers设置为非零:

M-x替换正则表达式RET C-x 8 RET 202e RET RET C-x 8 RET 202d RET RET

答案2

  1. 在缓冲区的开头添加以下一段 emacs Lisp 代码:

    (while (re-search-forward "\u202e" nil t)
            (replace-match     "\u202d"))

  2. 将光标放在最后一个括号后面并键入C-xC-e以执行代码。

答案3

M-x replace-regexp RET \u202e RET \u202d

答案4

输入以下内容:

M-% C-q 20056 RET RET C-q 20055 RET RET

C-q后跟八进制数,RET将插入八进制数所代表的字符并丢弃RET。要快速将十六进制转换为八进制,请输入#x202e提示符M-:,它将以十进制、八进制和十六进制打印结果数字。

为了能够更轻松地输入十进制数,就像 GTK 的C-S-u绑定一样,我在我的中使用了这个.emacs

(global-set-key [(control shift u)]
                (lambda ()
                  (interactive)
                  (let ((read-quoted-char-radix 16))
                    (call-interactively 'quoted-insert))))

相关内容