1

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

为什么这不起作用?

4

1 回答 1

1

首先,在您的代码中:

%{&fileencoding?&fileencoding:&fileencoding} 

没有意义,就像,if a is there, I write a, otherwise I write a anyway.

我猜你想拥有&fenc?&fenc:&enc

我认为您不能评估该功能,然后将 with%放在一起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

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

编辑

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

在此处输入图像描述

于 2014-08-07T10:05:44.413 回答