如何讓 tail -f 用 vim 顯示彩色輸出?

如何讓 tail -f 用 vim 顯示彩色輸出?

在這個問題,吉爾斯回答道

另一種可能性是tail -f運行Emacsshell 緩衝區並使用 Emacs 的語法著色功能。

因為我是 vim 用戶,所以我想這樣做維姆, 不是emacs
維姆有這個功能嗎?

答案1

您可以編寫一個多執行緒外掛程式來在 Python 或 Vim 支援且具有執行緒的任何其他腳本中即時更改緩衝區。

但據我所知,這只適用於終端。至少在X11中,如果GUI被另一個執行緒修改,GUI版本就會崩潰。

如果您接受其他計劃,GRC西澤能夠對流進行著色。

答案2

我喜歡它簡短且沒有大量的黑客或外部腳本。您可以在需要時從 ex(在 vim 中)執行此 oneliner(或將每個命令放入 vimrc 中,以便在開啟日誌檔案時使用。)

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

另外你還可:set syntax=logtalk以為日誌著色

(如果您想跳(幾乎)到文件末尾,只需使用“G”而不是帶有 feedkey 的“lh”)

解釋:

  • autoread:從外部更改時讀取文件(但它本身不能工作,沒有內部計時器或類似的東西。它只會在 vim 執行操作時讀取文件,例如 ex 中的命令:!
  • CursorHold * checktime:當使用者在指定的時間內updatetime(預設為 4000 毫秒)沒有移動遊標checktime時執行,檢查來自檔案外部的更改
  • call feedkeys("lh"):遊標向右移動一次,然後向左移動一次。然後什麼也沒有發生(...這意味著,它CursorHold被觸發了,這意味著我們有一個環形

要在使用時停止滾動call feedkeys("G"),請執行:set noautoread- 現在 vim 會告訴您文件已更改並詢問是否要讀取更改)

我喜歡在 vim 中查看日誌檔案(而不是 tail -f),例如,當您在沒有 screen/tmux 的 ssh 會話中工作時。此外,如果需要,您可以直接從日誌檔案複製,或直接儲存輸出,或...您可以使用 vim 執行的任何操作:)

*由此回答(參考一個答案潘海光和評論福祿克斯

相關內容