Come menzionato @muru nel commento , potresti usare una classe di equivalenza (descritta in :help /[[) che sembra essere un'espressione di classe di caratteri valutata come un insieme di caratteri simili (cioè sono gli stessi una volta rimosso qualsiasi accento / diacritico).
Ad esempio, per cercare kočičkae kocickacon lo stesso modello, è possibile utilizzare questo:
ko[[=c=]]i[[=c=]]ka
dove [[=c=]]è la classe di equivalenza per il cpersonaggio.
Per inserire automaticamente questa classe di caratteri ogni volta che si colpisce cdurante l'esecuzione di una ricerca, è possibile utilizzare questo mapping:
cnoremap <expr> c getcmdtype() =~ '[?/]' ? '[[=c=]]' : 'c'
che può essere scomposto in questo modo:
<expr> digitare la valutazione di un'espressione
getcmdtype() =~ '[?/]' verifica se stai scrivendo una ricerca indietro o avanti
'[[=c=]]'restituisce la classe di equivalenza per il ccarattere se il test precedente ha avuto esito positivo
'c'restituisce il cpersonaggio altrimenti
La mappatura precedente presenta 2 svantaggi:
- copre solo il
cpersonaggio
- può rendere difficile la lettura del modello
Potrebbe essere migliorato rimappando in <CR>questo modo:
cnoremap <CR> <C-\>e getcmdtype() =~ '[?/]' ? substitute(getcmdline(), '\a', '[[=\0=]]', 'g'): getcmdline()<CR><CR>
Quando si colpisce <CR>dopo aver scritto un modello per una ricerca, la mappatura sostituirà automaticamente tutti i caratteri alfabetici con la loro controparte della classe di equivalenza.
Il mapping per <CR>è simile al mapping precedente per c, tranne per il fatto che non utilizza l'argomento <expr>ma il mapping di sistema <C-\>e.
<expr>consente di inserire la valutazione di un'espressione, mentre <C-\>econsente di sostituire l'intera riga di comando con la valutazione di un'espressione.
:h [[=e:h patterns-composing.