vim: como personalizar o preenchimento automático sensível ao contexto?

1

Por exemplo, para qualquer arquivo que termine em .foo, eu gostaria do seguinte comportamento no vim:

  • se o usuário digitar i., quero que o preenchimento automático do vim forneça a listadogs, cats, mice
  • se o usuário digitar i.dogs., quero que o preenchimento automático do vim forneça a listapoodle,dachshund,pitbull

fwiw, preciso usar essa funcionalidade em um idioma personalizado para facilitar a digitação / aprendizagem.

kfmfe04
fonte

Respostas:

3

Você pode escrever uma conclusão do modo de inserção personalizada via 'omnifunc'ou 'completefunc'. Leia os detalhes em :help complete-functions; também existem exemplos.

Vim usa tipos de arquivos (por exemplo java, c, markdown) como uma abstração sobre extensões de arquivos, que são apenas uma maneira de representar o tipo de arquivo (os outros são por exemplo as #!/bin/bashlinhas hashbang no topo de um script executável). Você pode escrever uma detecção de tipo de arquivo personalizado, assim:

:autocmd BufNewFile,BufRead *.foo setf foo

E, em seguida, insira sua conclusão personalizada ~/.vim/ftplugin/foo_completion.vimcom conteúdos como este:

:setlocal completefunc=FooCompletion

Espero que esses indicadores ajudem; consulte a ajuda e os tipos de arquivos existentes para obter detalhes.

Ingo Karkat
fonte