2009-05-15 16 views
19

Chcę używać gvim do przeglądania pliku dziennika, który jest aktualizowany w sposób ciągły, tak, że zawsze widzę ostatnią zaktualizowaną linię, podobnie jak komenda tail w systemie Unix. Czy to możliwe?Funkcja podobna do ogona dla gvim

+0

możliwy duplikat [Using VIM jak dzienniki-viewer] (http://stackoverflow.com/questions/785389/using -vim-as-a-log-file-viewer) – feuGene

+0

Określa gvim, a drugi to vim. To rozwiązanie nie działa dla vima, więc jest oddzielnym pytaniem ORAZ oddzielną odpowiedzią. NIE duplikat. – iconoclast

Odpowiedz

38

Otwarte logfile i

:setlocal autoread 

Jest plugin (Tail Bundle) na stronie vim.

+0

Jak korzystać z wtyczki Tail Bundle? Przyjrzałem się dokumentom i żaden z nich nie sprawiał, że plik ciągle się ładował? – ewok

2

Lub mniej eleganckie rozwiązanie na vim 7.x byłoby po prostu zrobić: e! kiedy tylko potrzebujesz aktualizacji.

+3

Przepraszamy za zgłoszenie tej odpowiedzi, ale to jest dokładnie to, na co Canopus próbował NIE ... "ciągłe aktualizowanie, tak, że zawsze widzę ostatnią zaktualizowaną linię" nie jest rozwiązywane przez ': e!' Gdy tylko potrzebujesz aktualizacji . – pvandenberk

+0

, uznał, że zajrzy do pytań wysłanych dokładniej. – user28095

0

Bardzo mi się podoba i bez hackowania lub zewnętrznych skryptów. Można uruchomić ten oneliner z ex (Whithin vim) w razie potrzeby (lub umieścić każde polecenie w vimrc, bo gdy log-pliki są otwarte.)

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

a dodatkowo można :set syntax=logtalk pokolorować dzienniku

(jeśli byś chciał skakać (prawie) na końcu pliku, wystarczy użyć "G" zamiast "LH" z feedkeys)

Objaśnienie:

  • : odczytuje plik po zmianie z zewnątrz (ale nie działa samodzielnie, nie ma wewnętrznego zegara lub czegoś podobnego). To tylko do odczytu pliku, gdy vim robi akcję, jak w poleceniu ex :!
  • CursorHold * checktime: gdy kursor nie jest przenoszony przez użytkownika przez czas określony w updatetime (która wynosi 4000 milisekund domyślnie) checktime jest realizowane , który sprawdza zmiany spoza pliku
  • call feedkeys("lh"): kursor przesuwa się raz, prawo i tył z lewej strony. i nic się nie dzieje (... co oznacza, że ​​CursorHold zostanie uruchomiony, co oznacza, że ​​mamy pętlę)

Aby podczas korzystania call feedkeys("G") zatrzymać przewijanie, wykonać :set noautoread - vim teraz powie, że plik była zmiana ans zapytać, czy ktoś chce przeczytać zmian lub nie)

* z tego answer (odnosząc się do odpowiedzi przez PhanHaiQuang i komentarz przez flukus)

Powiązane problemy