Pengguna bahasa Inggris mungkin tidak memiliki masalah ini, tetapi vim cukup bodoh dalam hal ekspresi reguler. Dalam kasus saya sebagian besar huruf dalam alfabet Turki di luar alfabet EN tampaknya tidak memenuhi syarat sebagai karakter kata.
Diberikan dokumen yang mengandung kata Turki:
gerçekleşiyor
Ekspresi pencarian
/ger\wek
... tidak akan cocok dengan awal kata. Untuk alasan apa pun ç bukan karakter kata.
Ini menjadi menjengkelkan ketika plugin digunakan \w
sebagai bagian dari repertoar ekspresi reguler mereka. Contohnya adalah neocompcache
(yang saya gunakan bukan neocomplete
karena itu kompatibel dengan Neovim). Jika tidak ada aturan pencocokan tambahan untuk beberapa sintaks bahasa, autocomplete hanya terjadi pada potongan berukuran kata. Ketika saya sedang menulis prosa Turki dalam jumlah besar, sebenarnya akan berguna untuk memiliki autocomplete fungsional, tetapi dengan sebagian besar kata dipecah menjadi potongan-potongan kecil dengan karakter Turki yang ditinggalkan itu tidak ada gunanya.
Bagaimana saya bisa meyakinkan vim (sebaiknya neovim jika penting) untuk menerima rentang karakter yang lebih besar sebagai karakter "kata"?
utf-8
di seluruh papan. Dan ya sudah diatur di kedua pengaturan tersebut.Jawaban:
\w
adalah eksplisit pendek tangan untuk[0-9A-Za-z_]
. Gunakan\k
sebaliknya jika Anda ingin mencocokkan karakter Unicode di luar rentang itu. Misalnya,/ger\kek
cocokgerçekleşiyor
.Ngomong-ngomong, neocomplete menyadari hal ini tetapi sengaja tidak menggunakan
\k
(secara default) karena masalah kinerja. Anda dapat mengubahg:neocomplete#keyword_patterns
pengaturan neocomplete . Lihat juga:https://github.com/Shougo/neocomplete.vim/issues/207
sumber
Sepertinya tidak ada cara mudah untuk mendefinisikan ulang
\w
. Lihat, misalnya, Vim regex cocok dengan karakter unicode adalah sebagai non-kata dan kata Cocok berisi karakter di luar a-zA-Z .Namun, Anda mungkin dapat menggunakan berbagai kustom jika Anda tidak keberatan mengetik ulang secara teratur (ha):
[a-zA-Z\%u00c7-\%u015f]
. Sayangnya itu akan cocok dengan banyak karakter non-Turki juga, tetapi jika karakter tersebut tidak muncul dalam teks Anda, itu mungkin OK.sumber
\w
dan karenanya mereka semua jatuh ketika datang ke ini. Daripada menambal setiap sejak satu (jika saya bahkan dapat melacak pelakunya) akan lebih mudah bagi saya untuk menambal vim sehingga\w
berfungsi. Bah