Eu gosto curto e sem muitos hackers ou scripts externos. Você pode 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")
e, além disso, você pode :set syntax=logtalk
colorir o log
(se você quiser pular (quase) para o final do arquivo, use "G" em vez de "lh" com as teclas de feed)
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 em ex :!
CursorHold * checktime
: quando o cursor não é movido pelo usuário pelo tempo especificado em updatetime
(que é de 4000 milissegundos por padrão) checktime
é executado, que verifica alterações fora do arquivo
call feedkeys("lh")
: o cursor é movido uma vez, direita e volta à esquerda. e então nada acontece (... o que significa que CursorHold
é acionado, o que significa que temos um loop )
Para parar a rolagem ao usar call feedkeys("G")
, execute :set noautoread
- agora o vim dirá que o arquivo foi alterado e pergunta se alguém deseja ler as alterações)
Eu gosto da idéia de assistir arquivos de log no vim (em vez de tail -f), por exemplo, quando você está trabalhando em uma sessão ssh sem screen / tmux. Além disso, você pode copiar diretamente do arquivo de log, se necessário, ou salvar a saída diretamente ou ... o que você puder fazer com o vim :)
* desta resposta (referindo-se a uma resposta de PhanHaiQuang e um comentário de flukus )