Como o @muru mencionado no comentário , você pode usar uma classe de equivalência (descrita em :help /[[) que parece ser uma expressão de classe de caractere avaliada como um conjunto de caracteres semelhantes (ou seja, são os mesmos depois de remover qualquer acento / diacrítico).
Por exemplo, para procurar kočičkae kocickacom o mesmo padrão, você pode usar isto:
ko[[=c=]]i[[=c=]]ka
onde [[=c=]]é a classe de equivalência para o cpersonagem.
Para inserir automaticamente essa classe de caracteres sempre que você clicar em cuma pesquisa, use este mapeamento:
cnoremap <expr> c getcmdtype() =~ '[?/]' ? '[[=c=]]' : 'c'
que pode ser dividido assim:
<expr> digite a avaliação de uma expressão
getcmdtype() =~ '[?/]' teste se você está escrevendo uma pesquisa para trás ou para frente
'[[=c=]]'retorne a classe de equivalência para o ccaractere se o teste anterior for bem-sucedido
'c'retornar o ccaractere caso contrário
O mapeamento anterior tem 2 desvantagens:
- cobre apenas o
cpersonagem
- pode dificultar a leitura do padrão
Pode ser melhorado remapeando <CR>assim:
cnoremap <CR> <C-\>e getcmdtype() =~ '[?/]' ? substitute(getcmdline(), '\a', '[[=\0=]]', 'g'): getcmdline()<CR><CR>
Quando você pressiona <CR>após escrever um padrão para uma pesquisa, o mapeamento substitui automaticamente todos os caracteres alfabéticos pelo equivalente da classe de equivalência.
O mapeamento para <CR>é semelhante ao mapeamento anterior para c, exceto que ele não usa o argumento, <expr>mas o mapeamento do sistema <C-\>e.
<expr>permite inserir a avaliação de uma expressão, enquanto <C-\>epermite substituir toda a linha de comando pela avaliação de uma expressão.
:h [[=e:h patterns-composing.