5

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

Как я могу заменить все вхождения непечатаемого двухстороннего RTL-символа Unicode, шестнадцатеричное число которого равно 202e? Я хочу заменить его непечатаемым двунаправленным символом LTR Unicode, шестнадцатеричное число которого равно 202d?

Может ли кто-нибудь дать мне руководство?

4 ответа4

4

Для этого необходимо, enable-recursive-minibuffers был установлен не на ноль:

Mx replace-regexp RET Cx 8 RET 202e RET RET Cx 8 RET 202d RET RET

2
  1. Добавьте следующий фрагмент кода emacs Lisp в начале буфера:

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

  2. Поместите курсор сразу после последней круглой скобки и введите Cx Ce, чтобы выполнить код.

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

Введите следующее:

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

Cq, за которым следует восьмеричное число, и RET вставит символ, представленный восьмеричным числом, и сбросит RET. Чтобы быстро преобразовать шестнадцатеричное значение в восьмеричное, введите #x202e в приглашении M-:, которое выведет полученное число в десятичном, восьмеричном и шестнадцатеричном виде.

Чтобы упростить ввод десятичных чисел, как привязка CSu GTK, я использую это в моем .emacs:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .