如何摆脱vim中的空白块
我用textmate与Ruby代码工作了一年多。最近我转向使用mvim。当我打开mvim中的一些文件时,我得到空白块。 Look at this picture感受它。如何摆脱vim中的空白块
关于如何摆脱它们的任何想法?
感谢
其他人已经解释说,这可能是搜索突出显示的空格或制表符,或者更可能是突出显示设计来显示混合缩进(在python中特别有用)。我个人觉得这非常有用。
无论如何,有一些选项来解决你的高亮取决于原因:
清洁线空间的末尾(由乱提到的),使用类似:
:%s/ \+//
也许最有用的一个:整理一下Tab键:
如果您使用空格缩进:
:set expandtab
:retab
如果您使用的标签:
:set noexpandtab
:retab!
如果您使用缩进制表符和空格别处:
:set expandtab
:retab
:set noexpandtab
:execute '%[email protected]^\(\{'.&ts.'}\)\[email protected]\=repeat("\t", len(submatch(0))/'.&ts.')@'
我必须映射到命令的最后一行称为:RetabIndents
。所有这些假设您的tabstop
设置是正确的(它应根据您的图片设置为set ts=2
)。我个人还建议保留shiftwidth
等于tabstop
,所以set ts=2 sw=2
。
您可能也能够通过一个简单的gg=G
(自动缩进整个文件)脱身。但是,这在某些语言中不起作用(特别是python,因为任何编辑器都无法知道哪些行应该缩进到哪个级别)。
要关闭搜索为基础的暂时突出:
:noh
或永久(把这个在.vimrc里):
:set nohlsearch
或者一个快捷键,当你使用它,不要为不再需要它:
:nnoremap <ESC> :noh<CR><ESC>
要关闭缩进突出显示,您必须确定哪个highli ghting组被使用了,这有点复杂,并且可能最容易读取.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'
它看起来像你可能有一个存储搜索模式,在该行的开头突显空间:/^ +
和你的高亮颜色为浅灰色。
要摆脱它,请尝试搜索别的:/asdf<ENTER>
。
:%s/ *$//
如果你想摆脱上线的末端挂空间(他们总是惹恼了地狱了我,说实话),这个命令会从给定的文件带他们像多余空白的高亮(见例如线214)
有什么在你.vimrc
沿线的..
highlight RedundantSpaces ctermbg=grey guibg=grey
match RedundantSpaces /\s\+$\| \+\ze\t/
..try commentin克服它,看看这是否修复了问题
我猜它是突出显示缩进的原因是vim被配置为期望制表符,没有空格(反之亦然) - 再次确保你的.vimrc
设置正确(比如说,使用软标签)
只要抛出一个替代方案(尽管它不保存任何字符),也可以使用:%s/\ + $ //。 '\ +'是“一个或多个”,其中“*”是“零个或多个”。 – DrAl 2009-07-06 14:57:50
它的长相:
正如Seth所说,这些都是空格。本质上,mvim通过将它们着色为灰色而不是黑色来显示放置在文件中的空间。个人而言,我认为这是一项功能,您可以使用此突出显示方案来确定可能存在空格的位置,并且可以使用它来使您的代码更加整洁。
您可以通过调整突出显示选项来消除它。
那张照片是JavaScript的!可能不需要Ruby标记... – cdleary 2009-07-06 14:21:43
我应该提出了红宝石代码。当我打开一个红宝石文件时,我也得到了类似的空白块。 – Roger 2009-07-08 13:12:49