Na to pytanie Gilles odpowiedział
Jeszcze inną możliwością jest uruchomienie
tail -f
w buforze powłoki Emacsa i użycie zdolności kolorowania składni Emacsa.
Ponieważ jestem użytkownikiem vima, chciałbym to zrobić z vimem , a nie emacsem .
Czy vim ma tę funkcję?
Odpowiedzi:
Możesz napisać wtyczkę wielowątkową, aby zmieniać bufory w czasie rzeczywistym w Pythonie lub innym skrypcie obsługiwanym przez Vima i zawierającym wątki.
Ale o ile wiem, działa to tylko w terminalu. Przynajmniej w X11 wersja GUI ulegnie awarii, jeśli GUI zostanie zmodyfikowany przez inny wątek.
Jeśli zaakceptujesz inne programy, grc i ccze mogą pokolorować strumienie.
źródło
Podoba mi się to krótko i bez hakowania lub zewnętrznych skryptów. Możesz uruchomić ten oneliner z ex (whithin vim) w razie potrzeby (lub wstawić każde polecenie do vimrc, gdy pliki dziennika są otwarte).
a dodatkowo możesz
:set syntax=logtalk
pokolorować dziennik(jeśli chcesz przeskoczyć (prawie) na koniec pliku, po prostu użyj „G” zamiast „lh” z klawiszami feed)
Wyjaśnienie:
autoread
: czyta plik po zmianie z zewnątrz (ale nie działa samodzielnie, nie ma wewnętrznego timera ani czegoś takiego. Odczyta plik tylko wtedy, gdy vim wykona akcję, jak polecenie ex:!
CursorHold * checktime
: gdy kursor nie zostanie przesunięty przez użytkownika na czas określony wupdatetime
(domyślnie 4000 milisekund),checktime
wykonywany jest sprawdzanie zmian spoza plikucall feedkeys("lh")
: kursor przesuwa się raz, w prawo i do tyłu w lewo. i wtedy nic się nie dzieje (... co oznacza, żeCursorHold
jest wyzwalane, co oznacza, że mamy pętlę )Aby zatrzymać przewijanie podczas używania
call feedkeys("G")
, wykonaj:set noautoread
- teraz vim powie, że plik został zmieniony i zapytaj, czy chcesz odczytać zmiany, czy nie)Podoba mi się pomysł oglądania plików dziennika w vimie (zamiast tail -f), np. Kiedy pracujesz w sesji ssh bez screen / tmux. Dodatkowo możesz skopiować bezpośrednio z pliku dziennika, jeśli to konieczne, lub zapisać dane wyjściowe bezpośrednio lub ... cokolwiek możesz zrobić z vimem :)
* z tej odpowiedzi (nawiązującej do odpowiedzi PhanHaiQuang i komentarza flukus )
źródło