我有一些函数被定义为
function! myfunc()
let s = 'hello world'
return s
endfunction我可以将它作为statusline=%{myfunc()}包含在我的状态行中,它可以很好地打印出'hello world‘。我还可以将它着色为statusline=%#mycolor#%{myfunc()},其中mycolor是我定义的颜色。
现在,我想对每个单词分别着色,因此我将函数重新定义为
function! myfunc()
let s = '%#mycolor1#hello %#mycolor2#world'
return s
endfunction但是,当我在状态行中设置它时,输出只是文字字符串"%#mycolor1#hello %#mycolor2#world",而我希望hello根据mycolor1着色,world根据mycolor2着色。
我该怎么做呢?
发布于 2011-05-14 02:15:48
我认为这个vim实用程序可能部分回答了您的问题:
http://www.vim.org/scripts/script.php?script_id=3383
所以看起来你不能在'myfunc‘函数中改变颜色。但您可以通过使用exec命令指定statusline来获得颜色更改,例如:
:let sl_statement = 'set statusline=%#' . color1highlight .
\ '#%{myfunc1()}%#' . color2hl . '#%{myfunc2()}'
:exec sl_statementhttps://stackoverflow.com/questions/5994525
复制相似问题