Vim状态行不会从表达式

时间:2015-08-04 09:20:45

标签: vim colors highlight expansion statusline

我写了一个返回字符串的函数:

function! StatusBricks()
    let l:stat = Brick(statusbricks#ReportLinecount('raw'), {
        \ 'brick_color': 'LineNr',
        \ 'delimiter_position': 'right',
        \ 'delimiter_right': '❯'
        \ })
    return l:stat
endfunction

结果具有以下格式,由Brick()

生成
%#HighlightGroup#SomeData

当我将该函数用作状态行内的表达式时,我希望扩展highlight group以便为相应的状态行部分着色:

set statusline =%{StatusBricks()}

但我得到的是一个字面线显示%#HighlightGroup#ExpandedData而不是ExpandedData

vim statusline highlight group expansion

我做错了什么?

1 个答案:

答案 0 :(得分:0)

%{的结果未被进一步解释,但%!的结果是。set statusline=%!StatusBricks() 。使用

%!

:help 'statusline'似乎在帮助文件中没有标记,但在set stl=%#error#%r%#search# 的开头附近提到了它。

关注您的评论:如果您想要根据每个特定窗口的状态在状态行中使用不同的颜色,那么如果您不想要特定的突出显示,则可以突出显示空字符串出现。 E.g。

from git import Repo
repo_url = "http://repo.or.cz/w/htmlpurifier.git"
local_dir = "/Users/user1/gitprojects/"
Repo.clone_from(repo_url, local_dir)

只有只读窗口(例如打开帮助缓冲区)才会将只读标志显示为红色。不可否认,根据您的突出显示要求,这可能会变得复杂。