vim - 仅显示空白以供选择

vim - show whitespace for selection only

是否可以仅在可视模式下显示白色space 字符(space、制表符、换行符),特别是在所选文本中?

或者是否已经有一个不错的插件可以完成这项工作?

Vim 中的 "list" 选项将显示空白字符:

List mode: Show tabs as CTRL-I is displayed, display $ after end of line. Useful to see the difference between tabs and spaces and for trailing blanks.

参见:

:help list

话虽这么说...

这不是您想要的,但是 Tim Pope's unimpaired plugin 提供了一种非常简单的方法来关闭 "list" 选项(以及许多其他选项)。

因此,如果您需要快速浏览那些空白字符,可以将它们 on/off 切换为:

col

我认为 unimpaired 是一个必不可少的、非常轻量级的插件(基本上只是一组映射)

无法永久切换视觉选择的显示以启用 list 模式,而缓冲区的其余部分没有 list 设置。

然而,解决方法是,在视觉上选择一些行后,按 :,这样命令行看起来像这样::'<,'> 然后只需使用 :list 命令(可以缩写为 :l)。所以使用 :'<,'>l 将回显选定的行范围,就好像列表设置已打开一样。然而,这只能按行工作,所以不可能只打印块选择区域。

请参阅 :h :l 中的帮助。

根据如何为视觉模式设置突出显示,可以将白色 space 字符的前景色设置为 window 的背景色。

  • 这是一个示例 Normal 高亮组(取自我自己的配色方案),它定义了整个 window:

    的背景颜色
    hi Normal ctermbg=235 ctermfg=250 guibg=#262626 guifg=#bcbcbc cterm=NONE gui=NONE
    

    我们想要的值是彩色终端 235 和 GUI #262626

  • 这是一个示例 Visual 突出显示组。一种背景色上只有一种前景色:

    hi Visual ctermbg=110 ctermfg=235 guibg=#8fafd7 guifg=#262626 cterm=NONE gui=NONE
    

    颜色本身并不重要。

  • 这就是我们如何设置 SpecialKey 高亮组,使用上面的值:

    hi SpecialKey ctermbg=NONE ctermfg=235 guibg=NONE guifg=#262626 cterm=NONE gui=NONE
    

    它应该是这样的:

您需要编辑您的配色方案才能使其全面工作或将其添加到您的 vimrc:

augroup colors
  autocmd!
  autocmd ColorScheme * hi SpecialKey ctermfg=235 guifg=#262626
  autocmd ColorScheme * hi NonText    ctermfg=235 guifg=#262626
augroup END

当然,以上颜色只是一个例子; YMMV.