Seperti @muru disebutkan dalam komentar , Anda bisa menggunakan kelas ekivalensi (dijelaskan dalam :help /[[) yang tampaknya merupakan ekspresi kelas karakter yang dievaluasi sebagai seperangkat karakter yang sama (yaitu sama setelah Anda menghilangkan aksen / diakritik).
Misalnya, untuk mencari kočičkadan kocickadengan pola yang sama, Anda bisa menggunakan ini:
ko[[=c=]]i[[=c=]]ka
di mana [[=c=]]kelas ekivalensi untuk ckarakter.
Untuk secara otomatis memasukkan kelas karakter ini setiap kali Anda menekan csaat melakukan pencarian, Anda dapat menggunakan pemetaan ini:
cnoremap <expr> c getcmdtype() =~ '[?/]' ? '[[=c=]]' : 'c'
yang bisa dipecah seperti ini:
<expr> ketik evaluasi ekspresi
getcmdtype() =~ '[?/]' uji apakah Anda sedang menulis pencarian mundur atau maju
'[[=c=]]'mengembalikan kelas ekivalensi untuk ckarakter jika tes sebelumnya berhasil
'c'kembalikan ckarakter sebaliknya
Pemetaan sebelumnya memiliki 2 kelemahan:
- itu hanya mencakup
ckarakter
- itu bisa membuat polanya sulit dibaca
Ini dapat ditingkatkan dengan memetakan kembali <CR>seperti ini:
cnoremap <CR> <C-\>e getcmdtype() =~ '[?/]' ? substitute(getcmdline(), '\a', '[[=\0=]]', 'g'): getcmdline()<CR><CR>
Ketika Anda menekan <CR>setelah menulis pola pencarian, pemetaan akan secara otomatis mengganti semua karakter alfabet dengan rekan kelas ekivalen mereka.
Pemetaan untuk <CR>mirip dengan pemetaan sebelumnya c, kecuali tidak menggunakan argumen <expr>tetapi pemetaan sistem <C-\>e.
<expr>memungkinkan Anda untuk memasukkan evaluasi ekspresi, sementara <C-\>ememungkinkan Anda untuk mengganti seluruh baris perintah dengan evaluasi ekspresi.
:h [[=dan:h patterns-composing.