Sau*_*ier 5 vim colors highlight expansion statusline
我写了一个返回字符串的函数:
\n\nfunction! StatusBricks()\n let l:stat = Brick(statusbricks#ReportLinecount(\'raw\'), {\n \\ \'brick_color\': \'LineNr\',\n \\ \'delimiter_position\': \'right\',\n \\ \'delimiter_right\': \'\xe2\x9d\xaf\'\n \\ })\n return l:stat\nendfunction\nRun Code Online (Sandbox Code Playgroud)\n\n结果具有以下格式,由 生成Brick():
%#HighlightGroup#SomeData\nRun Code Online (Sandbox Code Playgroud)\n\n当我使用该函数作为状态行内的表达式时,我希望highlight group展开该函数以便为适当的状态行部分着色:
set statusline =%{StatusBricks()}\nRun Code Online (Sandbox Code Playgroud)\n\n但我得到的是状态栏字面显示%#HighlightGroup#ExpandedData而不是ExpandedData:
我究竟做错了什么?
\n的结果%{没有进一步解释,但是 的结果%!是。使用
set statusline=%!StatusBricks()
Run Code Online (Sandbox Code Playgroud)
%!帮助文件中似乎没有标签,但在 的开头附近提到了它:help 'statusline'。
按照您的评论:如果您希望根据每个特定窗口的状态在状态行中使用不同的颜色,那么如果您不希望出现特定的突出显示,则可以突出显示空字符串。例如
set stl=%#error#%r%#search#
Run Code Online (Sandbox Code Playgroud)
只有只读窗口(例如打开帮助缓冲区)才会将只读标志显示为红色。诚然,根据您的突出显示要求,这可能会变得复杂。