Depende.
Primeiro, seja pragmático. Se for apenas uma função curta e usada apenas localmente, não tenho nenhum escrúpulo em colocá-las diretamente no meu ~/.vimrc
ou em um script ~/.vim/ftplugin/*.vim
. O último é um pouco ineficiente, porque a função é redefinida para cada arquivo aberto que tenha o mesmo tipo de arquivo.
Você já conhece as funções de carregamento automático e, claro, esse é o lugar canônico para colocar funções personalizadas. As pessoas dogmáticas insistirão que os plug-ins (ft-) contêm apenas configuração, mapeamentos, comandos personalizados e :autocmd
, e todas as funções serão colocadas em ~/.vim/autoload/
. Eu recomendaria que para qualquer função mais longa (ou conjuntos de funções que chamam uns aos outros), ou qualquer coisa que você pretende publicar para outra pessoa reutilizar.
Para plug-ins de tipo de arquivo, adotei a convenção de colocar essas funções em ~/.vim/autoload/ft/{filetype}.vim
ou ~/.vim/autoload/ft/{filetype}/{submodule}.vim
.