Eu gosto curto e sem muito hacking ou scripts externos.
Você pode rodar este oneliner 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 usar :set syntax=logtalk
para colorir o log
(se você quiser pular (quase) para o final do arquivo, basta usar "G" em vez de "lh" com feedkeys)
Explicação:
-
autoread
: lê o arquivo quando alterado do lado de fora (mas ele não funciona sozinho, não há temporizador interno ou algo parecido. Ele só lerá o arquivo quando o vim fizer 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 é 4000 milissegundos por padrão) checktime
é executado, o que verifica se há alterações fora do arquivo
-
call feedkeys("lh")
: o cursor é movido uma vez, para a direita e vice-versa. 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 perguntará se alguém deseja ler as alterações ou não)
Eu gosto da idéia de ver arquivos de log no vim (em vez de na cauda -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 registro, se necessário, ou salvar a saída diretamente ou ... o que você pode fazer com o vim :)
* desta resposta (consulte uma resposta de PhanHaiQuang e um comentário de flukus )