更改 vim 的 linestatus 颜色

jos*_*ota 4 vim configuration

我已成功设置我的linestatus配置。然而,唯一缺少的是一些背景颜色,无论是整行还是特定元素。我该如何设置它们?

Pri*_*ash 5

您需要将颜色定义为新的高亮组 User1、User2 等:

hi User1 ctermbg=blue    ctermfg=white   guibg=blue    guifg=white
hi User2 ctermbg=black   ctermfg=red     guibg=black   guifg=red
Run Code Online (Sandbox Code Playgroud)

然后您可以在状态行字符串中指定它们,如下所示:

set statusline=
set statusline+=%1*   " Switch to colour User1
set statusline+=%F
set statusline+=%*    " Switch to default colour
set statusline+=%P
set statusline+=%2*   " Switch to colour User2
set statusline+=%c
Run Code Online (Sandbox Code Playgroud)

编辑

这可能属于一个新问题,但这是我用来查找突出显示组的现有着色的方法。在此示例中,我将Folded语法设置为与当前Normal语法相同。为此,我将 的输出定向hi Normal到一个变量,然后从中提取各种信息。

redir => hinorm
sil exe 'hi Normal'
redir END
if hinorm =~ 'cleared'
    sil exe 'hi clear Folded'
else
    let guibg = matchstr(strtrans(hinorm),'guibg=[#a-zA-Z0-9]*')
    let guifg = matchstr(strtrans(hinorm),'guifg=[#a-zA-Z0-9]*')
    sil exe 'hi Folded ' . guibg
    sil exe 'hi Folded ' . guifg
endif
Run Code Online (Sandbox Code Playgroud)

如果有更清洁的方法,请告诉我!