Se você ainda não modificou o arquivo, mas ele está aberto, então você o atualiza fora do Vim, então o Vim deve solicitar que você recarregue o arquivo, ou mesmo (se apenas o timestamp for alterado) ) atualize automaticamente para você. Mas o Vim só verifica isso quando executa um comando externo, ou quando obtém foco de entrada após ter perdido o foco de entrada (o que só acontece de forma confiável no gVim e em algumas versões de terminal). Se você estiver usando o terminal Vim, provavelmente precisará adicionar chamadas manualmente a :checktime
em um autocmd apropriado, por exemplo, CursorHold
, CursorMoved
, BufEnter
ou outro evento que seja acionado com freqüência. Veja este exemplo de autocmds para executar: checktime e também algumas das outras respostas sobre essa questão para detalhes.
Uma vez que você tenha verificado, de maneira confiável, arquivos modificados pelo Vim, você também pode personalizar o que o Vim faz quando detecta um registro de data e hora modificado, usando o evento FileChangedShell
autocmd. Este autocmd permite que você defina a variável v:fcs_choice
para "reload", "ask" ou "" (string vazia) para dizer ao Vim o que fazer, e você provavelmente poderia fazer algo louco como iniciar um diff com o arquivo em disco Se você quisesse. O Vim pode detectar e agir separadamente nos seguintes cenários (armazenados em v:fcs_reason
):
deleted file no longer exists
conflict file contents, mode or timestamp was
changed and buffer is modified
changed file contents has changed
mode mode of file changed
time only file timestamp changed
Veja link para um exemplo completo de uso do evento FileChangedShell.