Comme @muru l'a mentionné dans le commentaire , vous pouvez utiliser une classe d'équivalence (décrite dans :help /[[
) qui semble être une expression de classe de caractères évaluée comme un ensemble de caractères similaires (c'est-à-dire qui sont les mêmes une fois que vous supprimez tout accent / diacritique).
Par exemple, pour rechercher kočička
et kocicka
avec le même modèle, vous pouvez utiliser ceci:
ko[[=c=]]i[[=c=]]ka
où [[=c=]]
est la classe d'équivalence du c
personnage.
Pour insérer automatiquement cette classe de caractères à chaque fois que vous frappez c
lors d'une recherche, vous pouvez utiliser ce mappage:
cnoremap <expr> c getcmdtype() =~ '[?/]' ? '[[=c=]]' : 'c'
qui peut être décomposé comme ceci:
<expr>
taper l'évaluation d'une expression
getcmdtype() =~ '[?/]'
tester si vous écrivez une recherche en arrière ou en avant
'[[=c=]]'
renvoie la classe d'équivalence du c
caractère si le test précédent a réussi
'c'
retourner le c
caractère sinon
La cartographie précédente présente 2 inconvénients:
- il ne couvre que le
c
personnage
- cela peut rendre le motif difficile à lire
Il pourrait être amélioré en remappant <CR>
comme ceci:
cnoremap <CR> <C-\>e getcmdtype() =~ '[?/]' ? substitute(getcmdline(), '\a', '[[=\0=]]', 'g'): getcmdline()<CR><CR>
Lorsque vous appuyez <CR>
après avoir écrit un modèle pour une recherche, le mappage remplacera automatiquement tous les caractères alphabétiques par leur homologue de classe d'équivalence.
Le mappage pour <CR>
est similaire au mappage précédent pour c
, sauf qu'il n'utilise pas l'argument <expr>
mais le mappage système <C-\>e
.
<expr>
vous permet d'insérer l'évaluation d'une expression, tout en <C-\>e
vous permettant de remplacer la ligne de commande entière par l'évaluation d'une expression.
:h [[=
et:h patterns-composing
.