我在这里做错了什么?当我进入vim时没有任何反应。
这是我的代码!
colorscheme default
let g:Favcolorschemes = ["darkblue", "morning", "shine", "evening"]
function SetTimeOfDayColors()
" currentHour will be 0, 1, 2, or 3
let g:CurrentHour = (strftime("%H") + 0) / 6
if g:colors_name !~ g:Favcolorschemes[g:CurrentHour]
execute "colorscheme " . g:Favcolorschemes[g:CurrentHour]
echo "execute " "colorscheme " . g:Favcolorschemes[g:CurrentHour]
redraw
endif
endfunction
set statusline=%<%t%h%m%r\ \ %a\ %{strftime(\"%c\")}%=0x%B\
\\ line:%1,\ \ col:%c%V\ %P
set statusline+= \ %{SetTimeOfDayColors()}
答案 0 :(得分:1)
通过SetTimeOfDayColors()
,您可以有效地从:colorscheme
表达式执行'statusline'
命令。看起来这是不可能/有效的。但是,对我来说,这个最小的例子确实可行(Windows上的GVIM 7.3.823):
fun! Foo()
colorscheme blue
endfun
set stl=%{Foo()}
(抱歉,我不想花时间从你的屏幕截图中输入你的代码。)
在SetTimeOfDayColors()
中,只更新包含colorscheme名称的(全局)变量,让频繁运行的:autocmd
(例如CursorHold
)执行实际的:colorscheme
变化