如果当前文件没有utf8 fileencoding,如何更改状态行中的颜色?

时间:2014-08-07 09:09:46

标签: vim encoding utf-8 statusline

如果文件的没有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 

为什么这不起作用?

1 个答案:

答案 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

然后在加载缓冲区时调用该函数。

修改

添加它在终端中的工作方式:

enter image description here