2009-05-15 31 views
19

Tôi muốn sử dụng gvim để xem tệp nhật ký đang được cập nhật liên tục, vì vậy tôi luôn thấy dòng cập nhật cuối cùng, giống như lệnh đuôi trong unix. Có thể không?đuôi giống như chức năng cho gvim

+0

thể trùng lặp của [Sử dụng VIM như một logfile-xem] (http://stackoverflow.com/questions/785389/using -vim-as-a-logfile-viewer) – feuGene

+0

Điều này quy định gvim, cái còn lại là vim. Giải pháp này không hoạt động cho vim, do đó, nó là một câu hỏi riêng biệt và một câu trả lời riêng biệt. KHÔNG trùng lặp. – iconoclast

Trả lời

38

mở logfile và

:setlocal autoread 

Có một plugin (Tail Bundle) trên trang web vim.

+0

Tôi làm cách nào để sử dụng plugin Tail Bundle? Tôi đã nhìn vào các tài liệu và không ai trong số họ dường như làm cho tập tin liên tục tải? – ewok

2

Hoặc một giải pháp ít thanh lịch hơn trên vim 7.x sẽ chỉ là: e! bất cứ khi nào bạn cần cập nhật.

+3

Xin lỗi vì đã gắn cờ câu trả lời này, nhưng đây chính xác là những gì Canopus đang cố gắng KHÔNG làm ... "được cập nhật liên tục, sao cho tôi nhìn thấy dòng cập nhật cuối cùng" không được giải quyết bằng ': e!' Bất cứ khi nào bạn cần cập nhật . – pvandenberk

+0

được thừa nhận, sẽ xem xét các câu hỏi được đăng cẩn thận hơn. – user28095

0

Tôi thích nó ngắn và không có nhiều kịch bản hoặc tập lệnh bên ngoài. Bạn có thể chạy oneliner này từ cũ (whithin vim) khi cần thiết (hoặc đưa từng lệnh trong vimrc, khi log-file được mở.)

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

và bổ sung bạn có thể :set syntax=logtalk để tô màu các bản ghi

(nếu bạn muốn nhảy (gần) vào cuối của tập tin, chỉ cần sử dụng "G" thay vì "lh" với feedkeys)

Giải thích:

  • autoread: đọc tệp khi được thay đổi từ bên ngoài (nhưng nó không hoạt động theo cách riêng của nó, không có bộ hẹn giờ bên trong hoặc nội dung nào đó tương tự. Nó sẽ chỉ đọc tệp khi vim thực hiện hành động, như lệnh trong ví dụ :!
  • CursorHold * checktime: khi người dùng không di chuyển con trỏ trong thời gian được chỉ định trong updatetime (mặc định là 4000 mili giây) checktime , 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, sang phải và ngược lại. và sau đó có gì xảy ra (... điều đó có nghĩa, rằng CursorHold được kích hoạt, có nghĩa là chúng ta có một vòng lặp )

Để ngăn chặn sự di chuyển khi sử dụng call feedkeys("G"), thực hiện :set noautoread - bây giờ vim sẽ nói, rằng các tập tin đã thay đổi ans hỏi nếu ai muốn đọc những thay đổi hay không)

* từ answer này (đề cập đến một câu trả lời bằng cách PhanHaiQuang và bình luận bởi flukus)

Các vấn đề liên quan