我使用 textmate 处理 ruby 代码已经一年多了。最近我改用 mvim。当我在 mvim 中打开一些文件时,我得到了空块。看看这张照片,感受一下吧。
关于如何摆脱它们的任何想法?
谢谢
其他人解释说,这可能是搜索突出显示空格或制表符,或者(更有可能)它可能是设计为显示混合缩进的突出显示(对于它的价值在 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
等于tabstop
, 所以set ts=2 sw=2
。
您也可以使用简单的方法gg=G
(自动缩进整个文件)。但是,这在某些语言中不起作用(尤其是 python,因为任何编辑器都无法知道哪些行应该缩进到哪个级别)。
要暂时关闭基于搜索的突出显示:
:noh
或永久(将其放在 .vimrc 中):
:set nohlsearch
或者当您使用它并且不再需要它时的快速快捷方式:
:nnoremap <ESC> :noh<CR><ESC>
要关闭缩进突出显示,您必须确定使用哪个突出显示组,这有点复杂,可能最容易阅读您的 .vimrc,但如果您真的想搜索它,请将光标移动到其中一个突出显示的字符并输入(取自此处):
: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'
It's looks like highlighting of redundant whitespace (see line 214 for example)
Is there anything in your .vimrc
along the lines of..
highlight RedundantSpaces ctermbg=grey guibg=grey
match RedundantSpaces /\s\+$\| \+\ze\t/
..try commenting it out, and seeing if this fixes the problem
I guess the reason it's highlighting the indentation is vim is configured to expect tabs, no spaces (or vice versa) - again make sure your .vimrc
is setup correctly (say, using soft-tabs)
看起来您可能存储了一个搜索模式,该模式突出显示了行首的空格:/^ +
并且您的突出显示颜色是浅灰色。
要摆脱它,请尝试搜索其他内容:/asdf<ENTER>
.
如果你想摆脱行尾的悬挂空间(老实说,它们总是让我很恼火),这个命令将从给定文件中删除它们:
:%s/ *$//
正如赛斯所说,这些是空间。从本质上讲,mvim 通过将它们涂成灰色而不是黑色来向您显示放置在文件中的空间。
就个人而言,我认为这是一个功能,您可以使用此突出显示方案来识别可能有尾随空格的位置,并且可以使用它来使您的代码看起来更整洁。
您可能可以通过调整突出显示选项来消除它。