Untuk mencocokkan kata, seseorang dapat menggunakan
\v(\w+)
Dari bantuan vim :h \w
:
\ w karakter kata: [0-9A-Za-z_]
Ini berfungsi persis seperti yang dijelaskan dalam manual. Namun, saya ingin mencocokkan kata-kata yang mengandung karakter di luar a-z
, misalnya
prästgården . Mencocokkan ekspresi reguler \v(\w+)
dengan
hasil prästgården menjadi tiga pertandingan, sebagai gantinya:
prästgården
^^ ^^^ ^^^^
Bagaimana cara mencocokkan kata-kata yang mengandung karakter di luar a-z
? Lokal saya diatur ke bahasa Inggris dan jika mungkin saya ingin tetap seperti itu.
Sunting: Kata-kata mungkin bukan milik satu lokal, misalnya
prästgården
treść
vim
regular-expression
Marco
sumber
sumber
[[:alpha:]]\+
dalam kasus ini) seharusnya melakukan apa yang Anda inginkan di sini, tetapi menurut Vim docs (:help regex
) itu tidak: "Item ini hanya berfungsi untuk karakter 8-bit." Itu kebetulan bekerja di sini dengan Vim 7.3 pada OS X 10.8, tetapi Vim 7.3 di Linux tidak berfungsi, jadi saya berasumsi ada sesuatu yang spesifik Apple tentang Vim ini yang memungkinkannya. Anda juga akan menemukan bahwa melakukannya melalui pengikatan Vim Perl juga gagal, meskipun Perl memiliki dukungan Unicode yang sangat baik. Anda mungkin perlu beralih ke skrip Perl eksternal, sehingga Anda dapat mengaktifkan dukungan Unicode penuh.\p{Word}
alih-alih kelas karakter POSIX. Ada banyak kasus pengecualian dalam penanganan kelas karakter POSIX Perl, yang Anda hindari ketika Anda menggunakan properti Unicode sebagai gantinya.Jawaban:
Vim (pada versi 7.3) sangat terbatas sehubungan dengan dukungan karakter non-ASCII dalam pola. Secara khusus,
\w
hanya cocok dengan huruf ASCII, yang kegunaannya terbatas.Ada beberapa pola kelas karakter yang mendukung Unicode. Yang menarik bagi Anda adalah
\I
, yang pada umumnya cocok dengan huruf dan hanya huruf, plus_
dan@
. Setidaknya pada pemerasan Debian (di lokal UTF-8), ada kesalahan; misalnya×
dan÷
dicocokkan sebagai huruf, tetapi semua huruf beraksen Latin tampaknya dikenali dengan benar.\I
dapat dikonfigurasi melaluiisident
opsi, setidaknya untuk bagian ASCII.Jika Anda ingin dukungan Unicode yang serius, Anda harus mengandalkan alat eksternal. Misalnya
perl -C -e '/\p{L}/'
untuk mencocokkan huruf UTF-8 (dengan asumsi lokal UTF-8).sumber
Gunakan
\k
. Lihatiskeyword
opsi.sumber
Ini juga berfungsi untuk Cyrillic
Sedikit lebih rumit dan gagal dengan Cyrillic
Dok .
Diuji pada Vim 7.4.
sumber
[=l=]
ke daftar yang akan mencakupł
(misalnya złoty), dll. Tapi ini sudah gagal untuk Rusia. Bagaimanapun, terima kasih sudah berbagi.