如何让 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 执行的任何操作:)

*由此回答(参考一个答案潘海光和评论福禄克斯

相关内容