Jak mogę dokonać znaku U + 200B lub usunąć je przy użyciu tekstu Sublimentu 3. Znalazłem http://pastebin.com/ehwxnfme ale nie jestem pewien, jak go używać

9
thealbinosmurf 3 grudzień 2013, 20:42

2 odpowiedzi

Najlepsza odpowiedź

Poniżej będzie działać w Tekstie Sublime 2 i 3. Jednak ze względu na niektóre kwestie omówione później, ma potencjał zablokowania programu podczas edycji dużych plików i / lub na wolnych komputerach. W wersji Sublime Tekst 3-specyficzny za pomocą metody asynchronicznej znajduje się na dole.

Otwórz nowy plik w Sublime i ustaw swoją składnię do Pythona. Wklej w nim następujące:


import sublime_plugin

class ShowZeroWidthSpace(sublime_plugin.EventListener):
    def on_modified(self, view):
        spaces = []
        p = 0
        while True:
            s = view.find(u'\u200b', p + 1)
            if not s:
                break
            spaces.append(s)
            p = s.a
 
        if spaces:
            view.add_regions("zero-width", spaces, "invalid")
        else:
            view.erase_regions("zero-width")

Zapisz plik w katalogu {x0}} jako show_zero_width_space.py i powinien rozpocząć pracę natychmiast. Zasadniczo, co robi, jest za każdym razem, gdy bieżący widok jest modyfikowany, przeszukuje go znakiem według znaku poszukuje znaku przestrzeni zerowej, U+200B. Jeśli go znajdzie, dodaje lokalizację do listy i patrzy, aż osiągnie koniec pliku. Następnie, jeśli znaleziono jakieś znaki, są podświetlone zgodnie z zakresem invalid w temacie. Po podświetlonym można je wybrać i usunąć.

Ponieważ ta wtyczka przebiega w każdym czasie, w którym można modyfikować widok (po każdym naciśnięciu klawisza), ma na przykład potencjał, aby naprawdę spowolnić wysublimowane, zwłaszcza dla dużych plików. Dlatego, jeśli pracujesz nad plikami, które znasz, są czyste, po prostu zmień nazwę wtyczki do show_zero_width_space.py.old i upewnij się, że usuniesz dowolny plik o nazwie {x1}} i nie będzie aktywny. W przypadku wzniosłego tekstu 3-specyficznego obejścia, patrz poniżej.


Wersja Sublime Tekst 3-specyficzny

Sublime Tekst 3 API dla EventListener Obejmuje teraz Metoda on_modified_async(), zgodnie z faktem, że wszystkie funkcje ST3 są teraz bezpieczne. Działa to asynchronicznie kod, w sposób nie blokujący, więc submime nie należy spowolnić. Nowa wtyczka jest następująca:


import sublime_plugin

class ShowZeroWidthSpace(sublime_plugin.EventListener):
    def on_modified_async(self, view):
        spaces = []
        p = 0
        while True:
            s = view.find('\u200b', p + 1)
            if not s:
                break
            spaces.append(s)
            p = s.a
 
        if spaces:
            view.add_regions("zero-width", spaces, "invalid")
        else:
            view.erase_regions("zero-width")

12
Community 20 czerwiec 2020, 09:12

Najprostszym sposobem usunięcia przestrzeni zerowej szerokości w text Sublime jest korzystający z funkcji wyszukiwania i wymiany:

  • Naciśnij Ctrl + h (Alt + Cmd + f dla komputerów Mac)
  • Włącz flagę regularną wyrażenie, klikając przycisk Lewy na panelu wyszukiwania lub naciskając Alt + r (Alt + Cmd + r dla komputerów Mac)
  • Wpisz \x{200b} jako termin wyszukiwania
  • Upewnij się, że pole "Wymień z" jest pusty i naciśnij "Wymień wszystko"

Wtyczki do rozwiązania tego problemu na dobre!

Szukałem wtyczki, która wyróżniałaby się wszystkie ewentualnie przełomowe znaki, ale nie mogłem znaleźć jednego dla wysublimowanego tekstu, więc napisałem: https://github.com/tuurekaunisto/highlight-dodgy-chars

Wtyczka działa na zasadach WhiteList: wszystkie znaki nie-ASCII, które nie są zaznajomieniowe w ustawieniach.

Jeśli chcesz podświetlić rzeczy na podstawie własnego wyrażenia regularnego, ta wtyczka zrobi sztuczkę: https://github.com / BlueGray / Highlighter i jest również łatwo zainstalowany za pomocą menedżera pakietów.

15
Community 20 czerwiec 2020, 09:12