Як мати хвіст -f показати кольоровий вихід з vim?


9

На це запитання відповів Гілл

Ще одна можливість полягає у запуску tail -fв буфері оболонки Emacs та використанні можливостей забарвлення синтаксису Emacs.

Оскільки я користувач vim, я хотів би це зробити з vim , а не emacs .
Чи має vim цю особливість?


2
Vim - це лише текстовий редактор, на відміну від Emacs ... Однак у Vim є корисний плагін для Vim.
jasonwryan

Є також плагін vimpager, який може зробити трюк
bsd

1
чи повинен бути текстовий редактор? Якщо вам просто потрібно розфарбувати текст, ви можете скористатися Clide
golimar

Крім того, є TailBundle для vim.
jofel

Існує аналогічне питання тут . Рішення пояснює використання мультирейлу та те, як його налаштувати, можливо, це може бути корисним.
відхід

Відповіді:


2

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

Але це працює лише в терміналі, наскільки я знаю. Принаймні у X11 версія GUI вийде з ладу, якщо GUI буде змінено іншим потоком.

Якщо ви приймаєте інші програми, grc та ccze можуть розфарбувати потоки.


0

Мені подобається це коротке і без великої кількості злому або зовнішніх сценаріїв. Ви можете запустити цей 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 скаже, що файл було змінено і запитайте, чи бажаєте ви прочитати зміни чи ні)

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

* з цієї відповіді (посилаючись на відповідь PhanHaiQuang та коментар flukus )

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.