【问题标题】:Can Vim display BOL whitespace as a special character?Vim 可以将 BOL 空格显示为特殊字符吗?
【发布时间】:2012-05-18 14:23:11
【问题描述】:

Sublime(文本编辑器)可以将行首空白显示为特殊字符,例如 --->:

function foo() {
--->if (true) {
--->--->alert(true);
--->}
}

在某些情况下很有帮助。所以我想让 Vim 做同样的事情。我尝试使用:set list,但此选项仅将制表符显示为^I,它不显示空格。有没有办法像在 Sublime 中那样做到这一点?

【问题讨论】:

  • 你试过:set invlist吗?
  • @alex invlistlist 做同样的事情:显示EOL & TAB,它不会显示空格。
  • 我使用set listchars=trail:◃,nbsp:• 来显示 • 当有一个不间断空格时,以及 ◃ 当有一个尾随空格时。这不能回答你的问题,但它可能有用。 ;)
  • @SamyDindane 感谢您的提示,显示尾随空格很有帮助,但我想同时显示 BOL 空格。
  • 你也可以使用 indent-guides

标签: vim


【解决方案1】:

您可以突出显示 BOL 空白,这不会像您要求的那样插入特殊字符,但它至少会通过为其分配特定颜色使其突出。

:highlight BOLWhitespace guibg=red ctermbg=red
:match BOLWhitespace /^\s\+/

第一行将创建一个名为 BOLWhitespace 的高亮组,并将其设置为红色(可能想要使用一些更微妙的东西)。第二行将为行首的所有空白激活此突出显示。

也许这是一个可以接受的妥协?

【讨论】:

  • 是的,我知道 Vim 可以突出显示 BOLWhitespace,并且插件 indent-guides 可以通过突出显示做更多的事情。但我想显示一些特殊字符,如set list
【解决方案2】:

使用隐藏功能可以有效地模拟此类箭头 (见:help conceal):

function! EnableIndentArrows()
    exe 'syntax match NonText ''\%(^\%( \{'.&sw.'}\)*'.
    \   ' \{0,'.(&sw-2).'}\)\@<= '' transparent conceal cchar=┈'
    exe 'syntax match NonText ''\%(^\%( \{'.&sw.'}\)*'.
    \   ' \{'.(&sw-1).'}\)\@<= '' transparent conceal cchar=>'
    set conceallevel=2 concealcursor=nc
endfunction

【讨论】:

    猜你喜欢
    • 2010-10-29
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多