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


当前回答

:match CursorLine /\s\+/

避免了“必须搜索空间才能显示”这一点,但afaict不能配置为对空间进行非隐藏操作。CursorLine可以是任何照明组,在默认主题中它是一个普通下划线。

其他回答

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

您可以在一个自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

就这样

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

:syntax on
:set syntax=whitespace

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

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

我用这个

/\s
:set hlsearch

以突出显示空白。它搜索所有空白,然后启用高亮显示,使其突出显示。但是,它不打印特殊字符。

从补丁7.4.710开始,您现在可以使用listchars设置一个字符来代替空格!

:set listchars+=space:␣

因此,要将所有空白字符显示为字符,可以执行以下操作:

:set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣
:set list

完成后,要隐藏不可见的字符,请执行以下操作:

:set nolist

关于邮件列表的讨论:https://groups.google.com/forum/?fromgroups#!主题/vim_dev/pjmW6wOZW_Q

我没有从现有的答案中找到我想要的。下面的代码将突出显示所有的尾部空格亮红色

highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()