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?

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


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.


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

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))))

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.