在 vim 中显示一些空白字符,但不是全部?

在 vim 中显示一些空白字符,但不是全部?

我在 vim 中使用set listset listchars选项。我想自定义set listchars显示尾随空格等,但不显示制表符。是否可以指定我不想显示特定类型的空格?

我尝试过这个:

set listchars=tab:,trail:·,extends:>,precedes:<,nbsp:%

但是我在加载我的时收到语法错误.vimrc

答案1

不幸的是,这是不可能的。您只能:set list打开或关闭,并且对于您未在 中定义的元素'listchars',将使用默认值。

我不建议总是在 下操作:set list,因为它有一些副作用(例如影响软包装)。

如果你只是关心如何突出显示尾随空格,那么有一些插件可以通过其他方式实现这一点。实际上,我已经编写了ShowTrailingWhitespace 插件为此,该页面提供了替代方案的链接。

答案2

我刚刚发现,虽然这在技术上是不可能的,但人们可以作弊并输入特殊的 Unicode 空格字符(而不是常规空格字符)作为制表符显示的字符。虽然这仍然使用 vim 的hl-NonText突出显示颜色,但它肯定不那么突兀。

换句话说,执行以下操作(或类似操作):

set listchars=tab:  ,trail:·,extends:>,precedes:<,nbsp:%

后面两个字符tab:不是常规空格字符 - 它们是U+2002。您可以在 vim 中使用Ctrl-V u 2 0 0 2(插入模式)输入它们。

到目前为止,我还没有发现任何严重的副作用。

相关内容