vim:使用仅显示前导空格/制表符



我想使用listchars(或某种插件,如有必要(,使我的缩进在 vim 中可见。 但是,我只希望前导空格/制表符可见,而不是所有空格和制表符。

我在这里发现了一些关于空间的黑客。 这里的评论中还有一个选项。 问题是,由于选项卡具有可变宽度,因此这些选项不能用于选项卡。 充其量,我可以用恒定宽度的字符串替换制表符,例如>---,但这意味着如果我有一个 2 个字符的制表符,缩进最终会关闭。

有没有办法只显示前导制表符,而不显示内联或尾随制表符?

从 VIM 文档中,VIM 可以区分前导空格和尾随空格,但不能区分前导制表符或尾随制表符。 因此,选项卡只是 VIM 的一个选项卡,由tab:xy表示。 如果同时定义space:ctrail:c,则前者将表示除尾随空格之外的所有空格,横向表示尾随空格。

*'listchars'* *'lcs'*
'listchars' 'lcs'   string  (default "eol:$")
global
{not in Vi}
Strings to use in 'list' mode and for the |:list| command.  It is a
comma separated list of string settings.
*lcs-eol*
eol:c     Character to show at the end of each line.  When
omitted, there is no extra character at the end of the
line.
*lcs-tab*
tab:xy    Two characters to be used to show a tab.  The first
char is used once.  The second char is repeated to
fill the space that the tab normally occupies.
"tab:>-" will show a tab that takes four spaces as
">---".  When omitted, a tab is show as ^I.
*lcs-space*
space:c   Character to show for a space.  When omitted, spaces
are left blank.
*lcs-trail*
trail:c   Character to show for trailing spaces.  When omitted,
trailing spaces are blank.  Overrides the "space"
setting for trailing spaces.
*lcs-extends*
extends:c Character to show in the last column, when 'wrap' is
off and the line continues beyond the right of the
screen.
*lcs-precedes*
precedes:c    Character to show in the first column, when 'wrap'
is off and there is text preceding the character
visible in the first column.
*lcs-conceal*
conceal:c Character to show in place of concealed text, when
'conceallevel' is set to 1.
*lcs-nbsp*
nbsp:c    Character to show for a non-breakable space character
(0xA0 (160 decimal) and U+202F).  Left blank when
omitted.
The characters ':' and ',' should not be used.  UTF-8 characters can
be used when 'encoding' is "utf-8", otherwise only printable
characters are allowed.  All characters must be single width.
Examples: >
:set lcs=tab:>-,trail:-
:set lcs=tab:>-,eol:<,nbsp:%
:set lcs=extends:>,precedes:<
<   The "NonText" highlighting will be used for "eol", "extends" and
"precedes".  "SpecialKey" for "nbsp", "space", "tab" and "trail".
|hl-NonText| |hl-SpecialKey|

更好的方法可能是将matchsyntax一起使用,如下所示:

highlight LeadingSpace ctermbg=red guibg=red
highlight TrailingSpace ctermbg=red guibg=red
highlight LeadingTab ctermbg=red guibg=green
highlight TrailingTab ctermbg=red guibg=green
call matchadd('LeadingSpace', '^s+', 80)
call matchadd('TrailingSpace', 's+$', 80)
call matchadd('LeadingTab', '^t+', 99)    
call matchadd('TrailingTab', 't+$', 99)       

最新更新