我找不到一种方法来让Vim将所有空格显示为一个字符。我找到的只是制表符、尾随空格等。
当前回答
把这个添加到我的.vimrc中对我很有用。只要确保你没有其他冲突。。
autocmd VimEnter * :syn match space /\s/
autocmd VimEnter * :hi space ctermbg=lightgray ctermfg=black guibg=lightgray guifg=black
其他回答
我用这个
/\s
:set hlsearch
以突出显示空白。它搜索所有空白,然后启用高亮显示,使其突出显示。但是,它不打印特殊字符。
我认为这里的其他答案更全面,但我想我会分享一个技巧,我通常使用它来区分制表符和空格:
:syntax on
:set syntax=whitespace
这些是空白编程语言的语法高亮显示规则-制表符以绿色显示,空格以红色显示。:)
可以与许多其他答案中提到的:set list组合使用,尽管选项卡将显示为^I,没有绿色的高亮,但空格将显示为红色。
下面的代码基于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语法组中的某些内容会阻止显示中间点。我还不知道如何使该解决方案更可靠。
根据当前缓冲区的语法规则,类似以下内容可能有效:
:syn match WhiteSpace / / containedin=ALL conceal cchar=Æ
:setl conceallevel=2 concealcursor=nv
这需要一个带有+隐藏功能的vim 7.3
2014年10月24日更新在这一点上稍微扩展一下。当然,可以为锥形字符定义一些突出显示。
您可以配置隐藏字符的外观。对于突出显示,您必须至少配置一次“隐藏”突出显示组(请参阅:h hl Conceal上的帮助)。这可以在您的配色方案中完成,然后您不需要再次重新配置它。但这会影响所有隐藏的字符(例如,如果您的语法脚本隐藏了更多项目,它们将显示为空白字符)。可能是这样的::hi Conceal ctermbg=7 ctermbg=无guidg=浅灰色guidg=无如果语法脚本使用skipwhite关键字,Vim似乎不会突出显示空格。没有办法(也许这会被修复,我发布了一个补丁)似乎有一个补丁在浮动,它将允许自定义空间在列表模式下的外观。在撰写本文时,最近的一篇似乎是这篇。(这意味着,您需要构建自己的Vim来使用它)。conceallevel和conceacursor是窗口本地选项。这意味着它们可以在不同的窗口中不同(也可能由文件类型插件或其他插件脚本设置)。每当重新加载语法定义文件时,都需要执行语法高亮显示组。这可以使用BufWinEnteror完成,也可以使用Syntax或甚至FileType自动命令。(我还没有测试哪一个有效)。
最后两项意味着,您必须设置一些自动命令来重置语法规则和相应的条件选项。对于第一个,可能需要使用ColorScheme自动命令设置高亮显示(这样隐藏的字符看起来总是一样的,而与实际设置的颜色方案无关)。要获得一个完整的解决方案,请查看罗马的答案,这将为您提供一个开始。如果你设置了一个功能,你可以很容易地设置一个切换命令来打开或关闭特殊高亮显示。
更新10/26/2014我做了一个插件来解决这个问题。
更新2015年4月22日Vim中包含了一个补丁,可以使用列表选项实现这一点。只需设置集合列表listchars+=space:␣ 从Vim 7.4.711开始工作
要突出显示空间,只需搜索:
/<空间>
笔记:<space>表示只需键入空格字符。使用:set hlsearch启用搜索结果的突出显示
突出显示空格和制表符:/[<space><tab>]
删除高光的快速方法是搜索其他任何内容:/美国国防部
(只需键入任意随机字符的短列表)