Unicode w wyrażeniu regularnym Emacsa

7

Używam emacsa 24.

Jak mogę zastąpić wszystkie wystąpienia niedrukowalnego znaku bidi RTL Unicode, którego liczbą szesnastkową jest 202e? Chcę zastąpić go niedrukowalnym znakiem bidi LTR typu Unicode, którego liczbą szesnastkową jest 202d?

Czy ktoś może dać mi jakieś wskazówki?

Evan Aad
źródło

Odpowiedzi:

5

To wymaganie enable-recursive-minibuffersjest ustawione na wartość inną niż zero:

M-x replace-regexp RET C-x 8 RET 202e RET RET C-x 8 RET 202d RET RET

npostavs
źródło
Nie wiedziałem o C-x 8 RET!
Dzięki, ale niestety to rozwiązanie nie działa. Nadal pojawia się komunikat „Zamieniono 0 wystąpień”.
Evan Aad
1
@EvanAad: Czy to możliwe, że chodziło o zastąpienie znaku?
npostavs
3
  1. Dodaj następujący fragment kodu emacs Lisp na początku bufora:

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

  2. Umieść kursor tuż po ostatnim nawiasie i wpisz, C-xC-eaby wykonać kod.

Evan Aad
źródło
1
M-x replace-regexp RET \u202e RET \u202d
Oleg Pawliw
źródło
Myślałbyś, prawda? Niestety uruchomienie tego polecenia na pliku składającym się z pojedynczego znaku Unicode, którego numer szesnastkowy to 202e, powoduje wyświetlenie następującego komunikatu: „Zamieniono 0 wystąpień”
Ten też dla mnie nie działa i nie rozumiem, dlaczego należy się spodziewać.
npostavs
1

Wpisz następujące polecenie:

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

C-qpo którym następuje liczba ósemkowa i RETwstawi znak reprezentowany przez liczbę ósemkową i odrzuci RET. Aby szybko przekonwertować liczbę szesnastkową na ósemkową, wpisz #x202eznak M-:zachęty, który wyświetli wynikową liczbę dziesiętną, ósemkową i szesnastkową.

Aby umożliwić łatwiejsze wprowadzanie liczb dziesiętnych, C-S-upowiązanie a la GTK , używam tego w moim .emacs:

(global-set-key [(control shift u)]
                (lambda ()
                  (interactive)
                  (let ((read-quoted-char-radix 16))
                    (call-interactively 'quoted-insert))))
użytkownik4815162342
źródło
Dzięki, ale wciąż otrzymuję komunikat „Zamieniono 0 wystąpień”.
Evan Aad
To działa dla mnie. Ale zastanawiam się, dlaczego nie read-quoted-char-radixzawsze miałam 16 lat?
npostavs
@npostavs Spróbowałem i nadal nie działa dla mnie.
Evan Aad