gvim的尾部功能

Can*_*pus 23 vim

我想使用gvim来查看正在连续更新的日志文件,这样我总能看到最后更新的行,就像unix中的tail命令一样.可能吗?

Myk*_*yev 41

打开日志文件和

:setlocal autoread
Run Code Online (Sandbox Code Playgroud)

vim网站上有一个插件(Tail Bundle).


eli*_*eli 8

我喜欢它简短,没有很多黑客或外部脚本。您可以在需要时从 ex (whithin vim) 运行此 oneliner(或将每个命令放在 vimrc 中,以便在打开日志文件时。)

:set autoread | au CursorHold * checktime | call feedkeys("lh")
Run Code Online (Sandbox Code Playgroud)

此外,您还可:set syntax=logtalk以为日志着色

(如果您想(几乎)跳转到文件末尾,只需使用“G”而不是“lh”和feedkeys)

解释:

  • autoread: 从外部更改时读取文件(但它不能自行工作,没有内部计时器或类似的东西。它只会在 vim 执行操作时读取文件,例如 ex 中的命令 :!
  • CursorHold * checktime:当用户在指定的时间内updatetime(默认为 4000 毫秒)没有移动光标时checktime,将检查文件外部的更改
  • call feedkeys("lh"):光标移动一次,左右移动。然后什么也没有发生(......这意味着,CursorHold被触发,这意味着我们有一个循环

要在使用时停止滚动call feedkeys("G"),请执行:set noautoread- 现在 vim 会告诉,文件已更改并询问是否要读取更改)

*从这个答案(指的由一个答案PhanHaiQuang和评论flukus