Подтвердить что ты не робот

Хвост как функция для gvim

Я хочу использовать gvim для просмотра постоянно обновляемого файла журнала, так что я всегда вижу последнюю обновленную строку, такую ​​как команда tail в unix. Возможно ли это?

4b9b3361

Ответ 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)