Respostas:
Depois de algum trabalho de pesquisa, eu acho uma postagem em SO que pode resolver o meu problema usando modelos.Espero que seja útil para vocês.
Criar modelos pythontmp.txt
e phptmp.txt
em algum diretório (exemplo: ~/.vim/templates/
) como abaixo
#!/usr/bin/env python(php)
Adicione a seguinte configuração para .vimrc
autocmd bufnewfile *.py :0r ~/.vim/templates/pythontmp.txt
autocmd bufnewfile *.php :0r ~/.vim/templates/phptmp.txt
Não tenho certeza se você pode configurar o vim para fazer isso sem ajuda. Você pode criar um script auxiliar para fazer isso por você.
Assumindo um ambiente linux ... Esse script verificará a extensão do arquivo e, se necessário, criará o arquivo com o cabeçalho antes de chamar o vim.
#/bin/bash
type=`expr "\$1" : ".*\.\(.*\)"` # Check the file extension
case "$type" in
py)
interpreter=python;
;;
php)
interpreter=php;
;;
esac
if test ${interpreter+defined}; then echo "#!/usr/bin/env $interpreter" > $1 && /usr/bin/vim $1;
else /usr/bin/vim $1;
fi
Você poderia alias este script para ser executado no lugar do vim.
alias vim='/path/to/script.sh'
${interpreter+defined}
quer dizer? Eu tenho que apagar +defined
e fazer funcionar.
Existe muitos plugins que oferecem esse recurso. Alguns até permitem deduzir automaticamente várias coisas, ou até mesmo parametrizar o seu cabeçalho, dependendo da pasta onde você está criando o novo arquivo ( modelo mu ).
Eu realmente gosto da abordagem de definir uma função vim para fazer o trabalho, assim fica muito mais fácil fazer coisas mais complicadas. Por exemplo, se o texto inserido depender do nome do arquivo, como é comumente feito com C / C ++. Meu C / C ++ se parece com isso:
autocmd BufNewFile *.{h,hpp} call <SID>insert_c_gates()
...
function! s:insert_c_gates()
let gatename = <SID>get_gate_name()
execute "normal i#ifndef " . gatename
execute "normal o#define " . gatename
execute "normal Go#endif /* " . gatename . " */"
normal kk
endfunction
A função get_get_name () forma o nome do gate a partir do nome do arquivo que está sendo editado e, na verdade, varia dependendo do projeto em que estou trabalhando, porque alguns projetos querem que ele seja formatado de uma certa maneira.
:exe
+ :normal
(/ :put
) é bastante complicado manter comparando com soluções como mu-template (veja code.google.com/p/lh-vim/source/browse/mu-template/trunk/after/… ). Extrair a função de geração de cabeçalho é muito fácil, desde que o suporte ao Plugin do Expansor de Modelo chame as funções viml "externas".