开发者

Include color string in statusline

I have some function defined as

function! myfunc()
    let s = 'hello world'
    return s
endfunction

and I can include this in my status line as statusline=%{myfunc()}, which nicely prints 'hello world'. I can also color it as statusline=%#mycolor#%{myfunc()} where mycolor is a color I've defined.

Now I want to color each of the words separately, so I redefine my function as

function! myfunc()
    let s = '%#mycolor1#hello %#mycolor2#world'
    return s
endfunction

However, when I set this in the status line, the output is simply the literal string "%#mycolor1#hello %#mycolor2#world", whereas I want hello to be colored acco开发者_Python百科rding to mycolor1 and world colored according to mycolor2.

How do I go about doing this?


I think this vim utility may partly answer your question:

http://www.vim.org/scripts/script.php?script_id=3383

So it looks like you can't have color changes within your 'myfunc' function. But you can get color changes by assigning statusline using an exec command, e.g.:

:let sl_statement = 'set statusline=%#' . color1highlight .
                 \   '#%{myfunc1()}%#' . color2hl . '#%{myfunc2()}'
:exec sl_statement
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜