我找不到一种方法来让Vim将所有空格显示为一个字符。我找到的只是制表符、尾随空格等。


当前回答

:se list
:se nolist

:se足够了,不需要:set。

其他回答

下面的代码基于Christian Brabandt的答案,似乎可以按照OP的要求执行:

function! Whitespace()
    if !exists('b:ws')
        highlight Conceal ctermbg=NONE ctermfg=240 cterm=NONE guibg=NONE guifg=#585858 gui=NONE
        highlight link Whitespace Conceal
        let b:ws = 1
    endif

    syntax clear Whitespace
    syntax match Whitespace / / containedin=ALL conceal cchar=·
    setlocal conceallevel=2 concealcursor=c
endfunction

augroup Whitespace
    autocmd!
    autocmd BufEnter,WinEnter * call Whitespace()
augroup END

将这些行添加到~/.vimrc并开始新的Vim会话,以查看仍然不完美的魔术发生。

随意编辑默认颜色和隐藏字符。


注意:几种语言中*FuncBody语法组中的某些内容会阻止显示中间点。我还不知道如何使该解决方案更可靠。

:se list
:se nolist

:se足够了,不需要:set。

我认为这里的其他答案更全面,但我想我会分享一个技巧,我通常使用它来区分制表符和空格:

:syntax on
:set syntax=whitespace

这些是空白编程语言的语法高亮显示规则-制表符以绿色显示,空格以红色显示。:)

可以与许多其他答案中提到的:set list组合使用,尽管选项卡将显示为^I,没有绿色的高亮,但空格将显示为红色。

:set列表将以字符形式显示所有空白。除了一个空间之外,其他所有的东西看起来都会不同于它的正常状态,这意味着如果你仍然看到一个普通的旧空间,那真的是一个普通旧空间。:)

要突出显示空间,只需搜索:

/<空间>

笔记:<space>表示只需键入空格字符。使用:set hlsearch启用搜索结果的突出显示

突出显示空格和制表符:/[<space><tab>]

删除高光的快速方法是搜索其他任何内容:/美国国防部

(只需键入任意随机字符的短列表)