Мне нравится это коротко и без большого количества взлома или внешних сценариев.
Вы можете запускать этот oneliner из ex (с vim) при необходимости (или помещать каждую команду в vimrc, когда открываются лог-файлы.)
:set autoread | au CursorHold * checktime | call feedkeys("lh")
(если вы хотите перейти (почти) к концу файла, просто используйте «G» вместо «lh» с клавишами подачи)
Пояснение:
autoread
: читает файл при изменении извне (но он не работает сам по себе, нет внутреннего таймера или чего-то в этом роде. Он будет читать файл только тогда, когда vim выполняет действие, например, команду в бывший :!
CursorHold * checktime
: когда пользователь не перемещает курсор в течение времени, указанного в updatetime
(что по умолчанию составляет 4000 миллисекунд), выполняется checktime
, который проверяет изменения вне файла
call feedkeys("lh")
: курсор перемещается один раз, вправо и назад влево. и тогда ничего не происходит (... что означает, что CursorHold
запущен, что означает, что у нас есть loop )
Чтобы остановить прокрутку при использовании call feedkeys("G")
, выполните :set noautoread
- теперь vim скажет, что файл был изменен и спросит, хотите ли вы прочитать изменения или нет)
Мне нравится идея просматривать файлы журналов в vim (вместо tail -f), например когда вы работаете в сеансе ssh без screen / tmux. Кроме того, вы можете при необходимости скопировать напрямую из файла журнала, или сохранить результаты напрямую или ... все, что вы можете сделать с помощью vim :)
* из этого ответа (ссылаясь на ответ PhanHaiQuang и комментарий flukus )