Aby dopasować słowo, można użyć
\v(\w+)
Z pomocy vima :h \w
:
\ w znak słowny: [0-9A-Za-z_]
Działa to dokładnie tak, jak opisano w instrukcji. Chcę jednak dopasować słowa zawierające znaki poza a-z
, np
. Prästgården . Dopasowanie wyrażenia regularnego \v(\w+)
do
prästgården daje zamiast tego trzy dopasowania:
prästgården
^^ ^^^ ^^^^
Jak dopasować słowa zawierające znaki poza nimi a-z
? Moje ustawienia regionalne są ustawione na angielski i jeśli to możliwe, chciałbym, żeby tak było.
Edycja: słowa mogą nie należeć do jednego ustawienia narodowego, np
prästgården
treść
vim
regular-expression
Marco
źródło
źródło
[[:alpha:]]\+
W tym przypadku) powinny robić to, co chcesz tutaj, ale zgodnie z Vim docs (:help regex
) nie działa: „Te elementy działają tylko dla znaków 8-bitowych”. Zdarza się, że działa tutaj z Vimem 7.3 na OS X 10.8, ale Vim 7.3 na Linuksie nie działa, więc zakładam, że jest coś specyficznego dla Apple w tym Vimie, który na to pozwala. Przekonasz się również, że robienie tego przez wiązanie Vima Perla również kończy się niepowodzeniem, mimo że Perl ma bardzo dobrą obsługę Unicode. Konieczne może być przejście na zewnętrzny skrypt Perla, aby można było włączyć pełną obsługę Unicode.\p{Word}
zamiast klasy znaków POSIX. Istnieje wiele wyjątków w obsłudze klasy znaków POSIX w Perlu, których można uniknąć, gdy zamiast tego używa się właściwości Unicode.Odpowiedzi:
Vim (od wersji 7.3) jest bardzo ograniczony pod względem obsługi znaków we wzorcach spoza ASCII. W szczególności
\w
pasuje tylko do liter ASCII, co ma ograniczoną przydatność.Istnieje kilka wzorców klas znaków, które obsługują Unicode. Interesujące Cię są
\I
, które zasadniczo pasują do liter i tylko liter, plus_
i@
. Przynajmniej w przypadku ściśnięcia Debiana (w lokalizacji UTF-8) występują błędy; na przykład×
i÷
są dopasowane do liter, ale wszystkie litery z akcentami łacińskimi wydają się być rozpoznawane poprawnie.\I
można skonfigurować za pomocąisident
opcji, przynajmniej dla części ASCII.Jeśli chcesz poważnie wspierać Unicode, musisz polegać na zewnętrznym narzędziu. Na przykład,
perl -C -e '/\p{L}/'
aby dopasować litery UTF-8 (przy założeniu ustawień regionalnych UTF-8).źródło
Zastosowanie
\k
. Zobacziskeyword
opcję.źródło
Działa również dla cyrylicy
Trochę bardziej skomplikowane i nie działa z cyrylicą
Doc .
Testowane na Vimie 7.4.
źródło
[=l=]
do listy, która obejmowałabył
(np. Złoty) itp. Ale to już nie udaje się rosyjskiemu. W każdym razie dzięki za udostępnienie.