如果文件的没有utf8 编码,我想在状态行中实现不同的颜色。
这就是我现在使用的:
set statusline+=%3*\ F:%{&fileencoding?&fileencoding:&fileencoding}
hi User3 guifg=#292b00 guibg=#f4f597
这是我想要实现的:
set statusline+=%{Fenc()}*\ F:%{&fileencoding?&fileencoding:&fileencoding}
function! Fenc()
if &fenc !~ "utf-8"
return "4"
else
return "3"
endif
endfunction
hi User3 guifg=#292b00 guibg=#f4f597
hi User4 guifg=#ff0000 guibg=#f4f597
为什么这不起作用?
答案 0 :(得分:1)
首先,在您的代码中:
%{&fileencoding?&fileencoding:&fileencoding}
毫无意义,就像是if a is there, I write a, otherwise I write a anyway.
我想你想要&fenc?&fenc:&enc
我认为您无法评估该函数,然后将%
与set stl
放在一起,但您可以通过以下方式构建函数:
hi User3 ....
hi User4 ....
function! MkStatusLine()
if &fenc == "utf-8"
set statusline=%4*
else
set statusline=%3*
endif
set statusline+=Here you made your magic status line info text
endfunction
然后在加载缓冲区时调用该函数。
添加它在终端中的工作方式: