Configure o bash e / ou o vim para executar o source ~ / .bashrc toda vez que eu terminar de editá-lo

2

Eu gostaria de executar source ~/.bashrc toda vez que eu terminar de editar um arquivo com vim (ou seja, depois do comando :wq vim ).

Como devo configurar vim ou bash para funcionar dessa maneira?

    
por syntagma 09.07.2014 / 07:37

2 respostas

2

Uma maneira direta de fazer isso:

vim ~/.bashrc && source $_

Você pode criar um alias:

alias vimbashrc='vim ~/.bashrc && source $_'

Isso funciona em bash ou zsh . Em outro shell, você deve nomear explicitamente .bashrc para source para que funcione:

alias vimbashrc='vim ~/.bashrc && source ~/.bashrc'
    
por 09.07.2014 / 07:52
2

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
    
por 09.07.2014 / 08:00