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


当前回答

:将列表设置为启用。

:将nolist设置为禁用。

其他回答

根据当前缓冲区的语法规则,类似以下内容可能有效:

: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开始工作

突出显示搜索

:set hlsearch 

在.vimrc中

搜索空格制表符和回车符

/ \|\t\|\r

或搜索所有空白字符

/\s

搜索所有非空白字符(不显示空白字符,因此可以看到单词之间的空白字符,但不能看到尾随的空白字符)

/\S

显示所有尾随空格字符-在行的末尾

/\s$

我喜欢使用特殊字符来显示空白,这样更清晰。即使是切换地图也是快速检查的关键功能。

您可以在一个自2004年以来未更新的旧vim脚本中找到这些功能:

vim脚本/cream-showinvisibles@vim.org

多亏了项目vim脚本和vundle,你可以重新使用这个插件

vim脚本/cream-showinvisibles@github

更好的是,我的两分钱是添加一个可配置的快捷方式(而不是预定义的F4)

所以把这个添加到~/.vimrc中

Plugin 'albfan/cream-invisibles'

let g:creamInvisibleShortCut = "<F5>" "for my F4 goto next error

在vim上安装插件

:PluginInstall

就这样

也可以高亮显示空间(用块替换空间):

:%s/ /█/g

(在写入之前,请将其撤消)

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