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


当前回答

上面的所有答案都试图使vim中的空间可见。如果你真的坚持将可见空间作为点,还有另一种方法。。。

如果无法在vim中完成,请完全更改字体。我复制了Ubuntu One Mono字体,并使用FontForge进行了编辑。记住要更改字体的全名、字体族、首选字体族、兼容字体(在FontFoge中,它位于字体信息中的TTF名称下),以便将其作为单独的字体。只需编辑空格字符,使其中间有一个点,然后将字体保存到~/.fonts现在你可以把它用于你的gvim或整个终端。。。我复制了“!”字符,删除了行并将点移到中间。花了5分钟多一点。。。

注意:更改空格字符(0x20)会导致在整个vim屏幕上出现点的不便。。。(但它将分隔空格和制表符…)

其他回答

突出显示搜索

:set hlsearch 

在.vimrc中

搜索空格制表符和回车符

/ \|\t\|\r

或搜索所有空白字符

/\s

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

/\S

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

/\s$

从补丁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

:match CursorLine /\s\+/

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

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

把这个添加到我的.vimrc中对我很有用。只要确保你没有其他冲突。。

autocmd VimEnter * :syn match space /\s/
autocmd VimEnter * :hi space ctermbg=lightgray ctermfg=black guibg=lightgray guifg=black