Como faço para usar o inoremap com vários caracteres?

1

Eu sou novo na customização de ViM. Estou quase terminando de fazer o preenchimento automático funcionar como gostaria. Aqui está a linha de interesse:

inoremap <expr> i (pumvisible() ? '' : 'i<C-n>') . '<Down>'

Observe que ele captura i e depois ainda o digita (e depois envia <C-n>). Eu gostaria que isso funcionasse como uma expressão regular. Como posso fazer isso funcionar com qualquer caractere de palavra? Eu prefiro não ter várias cópias de cada um para um personagem diferente.

Tyler Crompton
fonte

Respostas:

2

Não há curingas nos mapeamentos; você teria que criar todos esses mapeamentos com um loop:

for i in split('abcdefg...', '\zs')
    execute printf("inoremap <expr> %s (pumvisible() ? '' : '%s<C-n>') . '<Down>'", i, i)
endfor

Por favor, note que existem plugins que atingem o preenchimento automático enquanto você digita (o que você parece tentar aqui); Eu uso AutoComplPop - automaticamente abre o menu de contexto para conclusões

Ingo Karkat
fonte