如何摆脱vim中的空块

时间:2009-07-06 14:16:20

标签: vim highlighting

我使用textmate处理ruby代码超过一年。最近我转而使用mvim。当我在mvim中打开一些文件时,我得到空块。 Look at this picture感受它。

关于如何摆脱它们的任何想法?

由于

5 个答案:

答案 0 :(得分:9)

其他人已经解释过,这可能是一个突出显示空格或制表符的搜索,或者(更有可能)它可能是高亮设计以显示混合缩进(在python中特别适用于它的价值)。我发现这个非常有用。

无论如何,有很多选项可以根据原因对您的突出显示进行整理:

要清理行尾空格(如混沌所述),请使用以下内容:

:%s/ \+//

可能是最有用的一个:整理标签:

如果您使用空格进行缩进:

:set expandtab
:retab

如果您使用标签:

:set noexpandtab
:retab!

如果您在其他地方使用标签进行缩进和空格处理:

:set expandtab
:retab
:set noexpandtab
:execute '%s@^\( \{'.&ts.'}\)\+@\=repeat("\t", len(submatch(0))/'.&ts.')@'

我将最后一行映射到名为:RetabIndents的命令。所有这些都假定您的tabstop设置正确(应根据您的图片使用set ts=2进行设置)。就个人而言,我还建议shiftwidth等同tabstopset ts=2 sw=2

可能也可以使用简单的gg=G(自动缩进整个文件)。但是,这在某些语言中不起作用(特别是python,因为任何编辑器都无法知道哪些行应该缩进到哪个级别)。

暂时关闭基于搜索的突出显示:

:noh

或永久(把它放在.vimrc中):

:set nohlsearch

或者当您使用它并且不再需要它时的快捷方式:

:nnoremap <ESC> :noh<CR><ESC>

要关闭缩进突出显示,您必须确定使用哪个突出显示组,这有点复杂并且可能最容易读取.vimrc,但如果您真的想要搜索它,请移动光标到其中一个突出显示的字符并输入(取自here):

:echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"<CR>

然后,您可以通过搜索.vim / .vimrc / _vimrc / vimfiles配置中命令行上报告的名称并注释掉任何相关内容来清除突出显示组。

了解更多信息

:help :s
:help 'expandtab'
:help :retab
:help :execute
:help 'tabstop'

:help :noh
:help 'hlsearch'

答案 1 :(得分:3)

它看起来像突出显示冗余空格(例如,参见第214行)

你的.vimrc中是否有任何内容......

highlight RedundantSpaces ctermbg=grey guibg=grey
match     RedundantSpaces /\s\+$\| \+\ze\t/

..尝试将其评论出来,并查看是否可以解决问题

我猜它突出缩进的原因是vim被配置为期望制表符,没有空格(反之亦然) - 再次确保你的.vimrc设置正确(比方说,使用软标签)

答案 2 :(得分:2)

看起来你可能有一个搜索模式,它突出显示行开头的空格:/^ +,你的高亮颜色是浅灰色。

要摆脱它,请尝试搜索其他内容:/asdf<ENTER>

答案 3 :(得分:1)

如果你想摆脱线末端的悬空(他们总是惹恼我,老实说),这个命令会将它们从给定的文件中删除:

:%s/  *$//

答案 4 :(得分:0)

正如Seth所说,这些是空间。基本上,mvim通过将它们涂成灰色而不是黑色来向您显示文件中放置的空格。

就我个人而言,我认为这是一个功能,您可以使用此突出显示方案来识别您可能有尾随空格的位置,并可以使用它来使您的代码看起来更整洁。

你可以通过调整突出显示选项让它消失。