Show 'space' character via listchars only for leading spaces

早过忘川 提交于 2020-01-02 03:15:21

问题


Is it possible in Vim to have my editor (when editing .c and .h files), show via listchars, a special character only for leading space characters?

I found a separate post that noted, as of version 7.4, Vim now supports highlighting all space characters via listchars. Here's my current listchars variable:

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

And here is a render of how it appears on my screen:

However, I would like it to appear like so (below), where only leading spaces are rendered via listchars, and spaces occurring after indentation-related spaces are not rendered. ie:

Is there a simple way to accomplish this, either via color scheme or .vimrc changes?


Image diff in case the difference isn't obvious due to low contrast:


回答1:


I don't think that linechars will help you, but this highlight might help:

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

Change the color scheme for whatever you like best.

If you insist on having the fancy · you can get them with a bit of a hack:

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

Now, only the starting · are visible! (change the white for whatever color you use as background and blue with the color of your choice).

NOTE: If you use the console Vim, replace (or add) guibg with ctermbg and the proper colors.



来源:https://stackoverflow.com/questions/40498265/show-space-character-via-listchars-only-for-leading-spaces

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!