仅针对前导空格通过 listchars 显示 'space' 字符

Show 'space' character via listchars only for leading spaces

是否可以在 Vim 中让我的编辑器(编辑 .c.h 文件时)通过 listchars 显示,一个特殊字符仅用于 leading space 个字符?

我找到了一个单独的 post,其中指出,从 7.4 版开始,Vim 现在支持通过 listchars 突出显示所有 space 个字符。这是我当前的 listchars 变量:

set list listchars=tab:>-,trail:.,extends:>,precedes:<,space:.

这是它在我的屏幕上的效果图:

但是,我希望它看起来像这样(如下),其中只有 leading spaces 通过 listchars 呈现,并且 spaces 发生在与缩进相关的 spaces 之后不会被渲染。即:

是否有一种简单的方法可以通过配色方案或 .vimrc 更改来实现?


图像差异,以防由于对比度低而导致差异不明显:

我认为 linechars 不会对您有所帮助,但此突出显示可能会有所帮助:

highlight WhiteSpaceBol guibg=lightgreen
match WhiteSpaceBol /^ \+/

根据自己的喜好更改配色方案。

如果你坚持要花哨的·,你可以通过一些技巧来获得它们:

set listchars=space:·
highlight WhiteSpaceBol guifg=blue
highlight WhiteSpaceMol guifg=white
match WhiteSpaceMol / /
2match WhiteSpaceBol /^ \+/

现在,只有开头 · 可见! (将 white 更改为您用作背景的任何颜色,并将 blue 更改为您选择的颜色)。

注意:如果您使用控制台 Vim,请将 guibg 替换(或添加)为 ctermbg 和适当的颜色。