Unicode в регулярном выражении Emacs

Unicode в регулярном выражении Emacs

Я использую emacs 24.

Как заменить все вхождения непечатаемого символа Unicode bidi RTL, шестнадцатеричное число которого 202e? Я хочу заменить его на непечатаемый символ Unicode bidi 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))))

Связанный контент