Как заставить tail -f отображать цветной вывод в vim?

Как заставить tail -f отображать цветной вывод в vim?

В этомвопрос, Жиль ответил

Еще одна возможность — это tail -fзапуститьEmacsбуфер оболочки и использовать возможности подсветки синтаксиса Emacs.

Так как я пользователь vim, я хотел бы сделать это с помощьювим, нетemacs.
Делаетвиместь эта функция?

решение1

Вы можете написать многопоточный плагин для изменения буфера(ов) в реальном времени на Python или любом другом скрипте, который Vim поддерживает и имеет потоки.

Но насколько я знаю, это работает только в терминале. По крайней мере в X11 версия GUI даст сбой, если GUI будет изменен другим потоком.

Если вы принимаете другие программы,гркиcczeспособны раскрашивать потоки.

решение2

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

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

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

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

Объяснение:

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

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

Мне нравится идея смотреть лог-файлы в vim (вместо tail -f), например, когда вы работаете в сеансе ssh без screen/tmux. Кроме того, вы можете копировать напрямую из лог-файла, если нужно, или сохранять вывод напрямую или ... что угодно, что вы можете делать с vim :)

*из этогоотвечать(ссылаясь на ответФанхайкуанги комментарий отфлюкус)

Связанный контент