Làm thế nào để có đuôi -f hiển thị đầu ra màu với vim?


9

Trong câu hỏi này , Gilles đã trả lời

Tuy nhiên, một khả năng khác là chạy tail -ftrong bộ đệm shell Emacs và sử dụng khả năng tô màu cú pháp của Emacs.

Bởi vì tôi là người dùng vim, tôi muốn làm điều này với vim chứ không phải emacs .
vim có tính năng này?


2
Vim chỉ là một trình soạn thảo văn bản, không giống như Emacs ... Tuy nhiên, có một plugin đuôi cho Vim có thể được sử dụng.
jasonwryan

Ngoài ra còn có trình cắm vimpager có thể thực hiện thủ thuật
bsd

1
nó có phải là một trình soạn thảo văn bản không? Nếu bạn chỉ cần tô màu văn bản, bạn có thể sử dụng
Clide

Ngoài ra, còn có TailBundle cho vim.
jofel

Có một câu hỏi tương tự ở đây . Các giải pháp giải thích việc sử dụng multitail và làm thế nào để cấu hình nó, có lẽ nó có thể hữu ích.
đăng xuất

Câu trả lời:


2

Bạn có thể viết một plugin đa luồng để thay đổi (các) bộ đệm trong thời gian thực bằng Python hoặc bất kỳ tập lệnh nào khác mà Vim hỗ trợ và có các luồng.

Nhưng điều này chỉ hoạt động trong thiết bị đầu cuối theo như tôi biết. Ít nhất là trong X11, phiên bản GUI sẽ bị sập nếu GUI bị sửa đổi bởi một luồng khác.

Nếu bạn chấp nhận các chương trình khác, GRCccze có thể colorize suối.


0

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=logtalktô 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 )

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.