Existe um gancho que você pode usar para que o vim execute um comando depois de escrever um arquivo. Por exemplo, aqui eu uso para auto-recarregar o arquivo rc do vim depois de salvar:
autocmd BufWritePost $MYVIMRC source $MYVIMRC
Infelizmente, isso não ajudará você com o que deseja fazer. Isso ocorre porque os comandos que são executados são executados como filhos do processo do vim. Não importa o que você faça lá, o ambiente pai não será afetado.
O que você realmente precisa é de algo no nível do shell. Comece olhando para o que você está fazendo:
vim ~/.bashrc
source ~/.bashrc
Mas você só quer o segundo se o primeiro for bem sucedido:
vim ~/.bashrc && source $_
Agora, tudo o que você precisa é de um comando de conveniência que facilite a digitação:
function vbrc () {
vim ~/.bashrc && source $_
}
Agora, para editar seu arquivo bashrc, basta executar vbrc
e ele será gerado quando você terminar de editar.
A outra coisa útil a fazer para testar as alterações em seu bashrc seria executar um shell como um subprocesso no vim. Isso permitiria testar rapidamente as alterações salvas no shell. Quando você sair do shell, voltará a editar o arquivo.
:!bash
Você pode até conectar o gancho de modo que, toda vez que salvar o arquivo, ele seja forçado a verificar os resultados dentro de um shell ativo. Obviamente, isso é útil apenas no contexto de desenvolver ativamente o seu rc, então você provavelmente vai querer ativá-lo manualmente ao invés de usar o seu vimrc:
autocmd BufWritePost ~/.bashrc !bash