Як згадується @muru в коментарі , ви можете використовувати клас еквівалентності (описаний у :help /[[
), який, здається, є виразом класу символів, який оцінюється як набір подібних символів (тобто є однаковими, як тільки ви видалите будь-який акцент / діакритичний).
Наприклад, щоб шукати kočička
і kocicka
з тим самим малюнком, ви можете скористатися цим:
ko[[=c=]]i[[=c=]]ka
де [[=c=]]
клас еквівалентності c
символу.
Щоб автоматично вставити цей клас символів c
під час натискання під час пошуку, ви можете використовувати це відображення:
cnoremap <expr> c getcmdtype() =~ '[?/]' ? '[[=c=]]' : 'c'
які можна розбити так:
<expr>
введіть оцінку виразу
getcmdtype() =~ '[?/]'
перевірити, чи записуєте ви назад чи назад
'[[=c=]]'
повернути клас еквівалентності c
символу, якщо попередній тест був успішним
'c'
повернути c
персонаж інакше
Попереднє відображення має 2 недоліки:
- вона охоплює лише
c
характер
- це може ускладнити читання візерунка
Це можна покращити шляхом перестановки <CR>
таким чином:
cnoremap <CR> <C-\>e getcmdtype() =~ '[?/]' ? substitute(getcmdline(), '\a', '[[=\0=]]', 'g'): getcmdline()<CR><CR>
Коли ви натиснете <CR>
після написання шаблону для пошуку, відображення автоматично замінить усі алфавітні символи їх аналогом класу еквівалентності.
Відображення <CR>
подібне до попереднього відображення, за c
винятком того, що воно не використовує аргумент, <expr>
а системне відображення <C-\>e
.
<expr>
дозволяє вставити оцінку виразу, в той час як <C-\>e
дозволяє замінити весь командний рядок оцінкою виразу.
:h [[=
та:h patterns-composing
.