хвост как функциональность для gvim - PullRequest
23 голосов
/ 15 мая 2009

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

Ответы [ 3 ]

40 голосов
/ 15 мая 2009

Открыть лог-файл и

:setlocal autoread

На сайте vim есть плагин ( Tail Bundle ).

4 голосов
/ 18 января 2018

Мне нравится это коротко и без большого количества взлома или внешних сценариев. Вы можете запускать этот oneliner из ex (с vim) при необходимости (или помещать каждую команду в vimrc, когда открываются лог-файлы).

:set autoread | au CursorHold * checktime | call feedkeys("lh")

и дополнительно вы можете :set syntax=logtalk раскрасить бревно

(если вы хотите перейти (почти) к концу файла, просто используйте «G» вместо «lh» с кнопками)

Пояснение:

  • autoread: читает файл при изменении извне (но он не работает сам по себе, нет внутреннего таймера или чего-то в этом роде. Он будет читать файл только тогда, когда vim выполняет действие, например, команду в бывший :!
  • CursorHold * checktime: когда пользователь не перемещает курсор в течение времени, указанного в updatetime (что по умолчанию составляет 4000 миллисекунд), выполняется checktime, который проверяет изменения вне файла
  • call feedkeys("lh"): курсор перемещается один раз, вправо и назад влево. и тогда ничего не происходит (... что означает, что CursorHold запущено, что означает, что у нас есть loop )

Чтобы остановить прокрутку при использовании call feedkeys("G"), выполните :set noautoread - теперь vim скажет, что файл был изменен и спросит, хотите ли вы прочитать изменения или нет)

* из этого ответа (ссылаясь на ответ PhanHaiQuang и комментарий flukus )

2 голосов
/ 23 мая 2012

Или менее элегантное решение на vim 7.x было бы просто сделать: e! всякий раз, когда вам нужно обновление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...