Como @muru mencionó en el comentario , podría usar una clase de equivalencia (descrita en :help /[[) que parece ser una expresión de clase de caracteres evaluada como un conjunto de caracteres similares (es decir, son los mismos una vez que elimina cualquier acento / signo diacrítico).
Por ejemplo, para buscar kočičkay kocickacon el mismo patrón, puede usar esto:
ko[[=c=]]i[[=c=]]ka
donde [[=c=]]es la clase de equivalencia para el cpersonaje.
Para insertar automáticamente esta clase de caracteres cada vez que presiona cmientras realiza una búsqueda, puede usar esta asignación:
cnoremap <expr> c getcmdtype() =~ '[?/]' ? '[[=c=]]' : 'c'
que puede desglosarse así:
<expr> escriba la evaluación de una expresión
getcmdtype() =~ '[?/]' prueba si estás escribiendo una búsqueda hacia atrás o hacia adelante
'[[=c=]]'devolver la clase de equivalencia para el cpersonaje si la prueba anterior tuvo éxito
'c'devolver el cpersonaje de lo contrario
El mapeo anterior tiene 2 inconvenientes:
- solo cubre el
cpersonaje
- puede hacer que el patrón sea difícil de leer
Podría mejorarse reasignando <CR>así:
cnoremap <CR> <C-\>e getcmdtype() =~ '[?/]' ? substitute(getcmdline(), '\a', '[[=\0=]]', 'g'): getcmdline()<CR><CR>
Cuando presiona <CR>después de escribir un patrón para una búsqueda, la asignación reemplazará automáticamente todos los caracteres alfabéticos por su contraparte de clase de equivalencia.
La asignación para <CR>es similar a la asignación anterior para c, excepto que no usa el argumento <expr>sino la asignación del sistema <C-\>e.
<expr>le permite insertar la evaluación de una expresión, mientras <C-\>eque le permite reemplazar toda la línea de comando con la evaluación de una expresión.
:h [[=y:h patterns-composing.