![根据一天中的时间设置 vim 后台模式](https://linux22.com/image/1134084/%E6%A0%B9%E6%8D%AE%E4%B8%80%E5%A4%A9%E4%B8%AD%E7%9A%84%E6%97%B6%E9%97%B4%E8%AE%BE%E7%BD%AE%20vim%20%E5%90%8E%E5%8F%B0%E6%A8%A1%E5%BC%8F.png)
Vim 中的几种配色方案有两种模式,当您这样做时会改变颜色:
set bg=light/dark
我想知道是否可以设置我的.vimrc
文件,以便它根据系统时间设置适当的模式,例如在 20:00 到 07:00 之间设置暗模式,否则设置亮模式。
如何才能实现这一点呢?
答案1
这是一个漂亮的解决方案Vi 和 Vim Beta,其中的一部分我在下面引用,它会自动更改背景全部运行且全新根据时间的 Vim 实例:
您可以使用
timer_start()
设置“定时器”每隔n毫秒。例如:fun! s:set_bg(timer_id) let &background = (strftime('%H') < 12 ? 'light' : 'dark') endfun call timer_start(1000 * 60, function('s:set_bg'), {'repeat': -1}) call s:set_bg(0) " Run on startup
这将
s:set_bg()
每 1 分钟(60,000 毫秒)运行一次,并且通过设置repeat
它将-1
无限期运行(而不是仅运行一次)。据我(短暂)测试所见,这不会引起任何副作用,例如速度变慢或闪烁。如果确实如此,您可以考虑将逻辑更改为
background
仅当它与当前值不同时才设置(但看起来 Vim 本身就足够智能了)。
对于您的具体情况,您可以添加以下内容,.vimrc
在 07:00 至 20:00 之间使用浅色背景,否则使用深色背景:
fun! s:set_bg(timer_id)
let &background = (strftime('%H') >= 07 && strftime('%H') < 20 ? 'light' : 'dark')
endfun
call timer_start(1000 * 60, function('s:set_bg'), {'repeat': -1})
call s:set_bg(0) " Run on startup