Tôi thích nó ngắn và không có nhiều hack hoặc các kịch bản bên ngoài. Bạn có thể chạy oneliner này từ ex (whithin vim) khi cần (hoặc đặt từng lệnh trong vimrc, khi tệp log được mở.)
:set autoread | au CursorHold * checktime | call feedkeys("lh")
và ngoài ra, bạn có thể :set syntax=logtalk
tô màu nhật ký
(nếu bạn muốn nhảy (gần) đến cuối tệp, chỉ cần sử dụng "G" thay vì "lh" với feedkey)
Giải trình:
autoread
: đọc tệp khi thay đổi từ bên ngoài (nhưng nó không hoạt động, không có bộ đếm thời gian bên trong hoặc đại loại như thế. Nó sẽ chỉ đọc tệp khi vim thực hiện một hành động, như lệnh trong ex :!
CursorHold * checktime
: khi con trỏ không được di chuyển bởi người dùng trong thời gian được chỉ định trong updatetime
(theo mặc định là 4000 giây) checktime
, sẽ kiểm tra các thay đổi từ bên ngoài tệp
call feedkeys("lh")
: con trỏ được di chuyển một lần, phải và quay lại trái. và sau đó không có gì xảy ra (... có nghĩa là, điều đó CursorHold
được kích hoạt, có nghĩa là chúng ta có một vòng lặp )
Để dừng cuộn khi sử dụng call feedkeys("G")
, hãy thực thi :set noautoread
- bây giờ vim sẽ cho biết, tệp đã được thay đổi và hỏi xem có muốn đọc các thay đổi hay không)
Tôi thích ý tưởng xem logfiles trong vim (thay vì đuôi -f), ví dụ: khi bạn đang làm việc trong phiên ssh không có màn hình / tmux. Ngoài ra, bạn có thể sao chép trực tiếp từ logfile, nếu cần hoặc lưu trực tiếp đầu ra hoặc ... bất cứ điều gì bạn có thể làm với vim :)
* từ câu trả lời này (tham khảo câu trả lời của PhanHaiQuang và nhận xét của flukus )