Supondo que um arquivo não tenha alterações não salvas no buffer do VIM, eu gostaria que ele fosse recarregado automaticamente se o arquivo mudar no disco. O caso de uso mais frequente é quando eu atualizo a cópia de trabalho na qual o arquivo reside.
Como posso conseguir isso?
Respostas:
No seu
~/.vimrc
:fonte
autoread
, somente é acionado após a execução de um comando externo. Esta resposta detalha as soluções.Isto é o que funcionou para mim
A primeira linha não foi suficiente por si só. Você pode colocar em você
.vimrc
crédito para Phan Hai Quang
fonte
:help timestamp
" parece indicar que eu estou com erro e que o Vim realiza apenas a verificação de eventos específicos, portanto, o autocmd pode ser necessário para fazer a verificação com mais frequência.A leitura automática não funciona corretamente. O seguinte funciona para mim:
Você precisa primeiro instalar o script a partir daqui .
Eu obtive os melhores resultados chamando a função de instalação diretamente, assim.
A razão para isso é que desejo executar uma instalação ipython / screen / vim.
Você pode facilmente converter isso em uma versão aprimorada da visualização.
script do processo ..
fonte
O plugin vim-autoread funcionou para mim até agora:
fonte
j
) para ver a atualização efetiva. Eu criei um problema aqui sobre isso: github.com/djoshea/vim-autoread/issues/3desta resposta (consultando uma resposta de PhanHaiQuang e um comentário de @flukus)
Pode-se executar este oneliner a partir de ex (dentro do vim) quando necessário (ou colocar cada comando no vimrc, para quando os arquivos de log forem abertos.)
:set autoread | au CursorHold * checktime | call feedkeys("lh")
Explicação:
- autoread : lê o arquivo quando alterado do lado de fora (mas não funciona por si só, não há cronômetro interno ou algo assim. Ele só lerá o arquivo quando o vim executar uma ação, como um comando ex
:!
- CursorHold * checktime : quando o cursor não é movido pelo usuário pelo tempo especificado em 'updatetime' (que é de 4000 milissegundos por padrão), o checktime é executado, que verifica alterações fora do arquivo
- chame feedkeys ("lh") : o cursor é movido uma vez, direita e volta à esquerda ... e então nada acontece (... o que significa que o CursorHold é acionado, o que significa que temos um loop )
fonte
lh
não faz nada, se o cursor estiver na última posição da linha,lh
ele mudará sua localização.Existem alguns plugins listados aqui que podem funcionar dependendo da sua versão do Vim.
Outra abordagem é enviar periodicamente o
checktime
comando ao vim a partir de um processo externo. Aqui está um script ShellJS para fazer isso (requershelljs-plugin-sleep
NeoVim envr
)fonte