Eu tenho um arquivo de configuração que mantenho aberto no vim, mas que às vezes é alterado no disco, sem que essas alterações sejam refletidas no terminal. Posso atualizar o conteúdo na tela sem fechar e reabrir o arquivo? Se sim, como?
362
Respostas:
Você pode usar o
:edit
comando, sem especificar um nome de arquivo, para recarregar o arquivo atual. Se você fez modificações no arquivo, pode usar:edit!
para forçar o recarregamento do arquivo atual (você perderá as modificações).O comando
:edit
pode ser abreviado por:e
. A edição forçada pode ser feita por:e!
fonte
:e!
.:edit
e:edit!
você pode usar:e
e:e!
respectivamente.u
o:e!
.:bufdo e
Além de atualizar manualmente o arquivo
:edit
, você pode colocar em seu~/.vimrc
para fazer com que o Vim atualize automaticamente todos os arquivos que não foram editados pelo Vim. Veja também
:checktime
.fonte
git pull
estiver ciente de que pode perder as alterações não salvas na tela de maneira não intencional.gvim
ou executar comandos externos.:checktime
autoread
pode ser disparado automaticamente X segundos após o cursor parar de se mover, veja esta resposta .TL; DR
Pule para o
Wrap-up
cabeçalho dasvimrc
linhas a serem adicionadas para tornar sua vida melhor.Manualmente
Corre
:checktime
Automaticamente
Para carregar automaticamente as alterações, adicione
vimrc
:set autoread
Esta resposta adiciona uma ressalva:
Leia sobre soluções.
Disparar quando o cursor parar de se mover
Adicione ao seu
vimrc
:Por padrão, CursorHold é acionado após o cursor permanecer parado por 4 segundos e é configurável via hora de atualização .
Gatilho na alteração do buffer ou no foco do terminal
Adicione o seguinte ao seu
vimrc
gatilhoautoread
ao alterar buffers enquanto estiver dentro do vim:Captura do foco da janela do terminal dentro do vim comum
Para que
FocusGained
(veja acima) funcione no vim simples, dentro de um emulador de terminal (Xterm, tmux, etc) instale o plugin: vim-tmux-focus-eventsNas versões tmux> 1.9, você precisará adicionar
.tmux.conf
:Embrulhar
Notificações quando
autoread
gatilhos também são possíveis .Aqui estão minhas
vimrc
linhas para implementar todas as opções acima:Obrigado a ErichBSchulz por me apontar na direção certa com
au CursorHold
.fonte