Я хочу использовать gvim для просмотра постоянно обновляемого файла журнала, так что я всегда вижу последнюю обновленную строку, такую как команда tail в unix. Возможно ли это?
Хвост как функция для gvim
Ответ 1
Откройте файл журнала и
:setlocal autoread
Существует плагин (Tail Bundle) на vim.
Ответ 2
Или менее элегантное решение на vim 7.x было бы просто: e! когда вам нужно обновление.
Ответ 3
Мне нравится это коротко и без большого количества хакеров или внешних скриптов. Вы можете запустить этот oneliner из ex (whithin vim), когда это необходимо (или поместить каждую команду в vimrc, поскольку при открытии журнальных файлов.)
:set autoread | au CursorHold * checktime | call feedkeys("lh")
и, кроме того, вы можете :set syntax=logtalk
покрасить журнал
(если вы хотите прыгать (почти) в конец файла, просто используйте "G" вместо "lh" с ключами-ключами)
Пояснение:
-
autoread
: считывает файл при изменении извне (но он не работает сам по себе, нет внутреннего таймера или что-то в этом роде. Он будет читать только файл, когда vim выполняет действие, например команду в ex:!
-
CursorHold * checktime
: когда курсор не перемещается пользователем в течение времени, указанного вupdatetime
(который по умолчанию составляет 4000 миллисекунд), выполняетсяchecktime
, который проверяет наличие изменений вне файла -
call feedkeys("lh")
: курсор перемещается один раз, вправо и назад влево. и тогда ничего не происходит (... что означает, чтоCursorHold
запускается, что означает, что мы имеем цикл)
Чтобы остановить прокрутку при использовании call feedkeys("G")
, выполните :set noautoread
- теперь vim скажет, что файл был изменен и спросили, хотите ли вы прочитать изменения или нет)
* из этого ответа (ссылаясь на ответ PhanHaiQuang и комментарий flukus)