我使用textmate处理ruby代码超过一年.最近我转而使用mvim.当我在mvim中打开一些文件时,我得到空块.看看这张照片就能感受到它.
关于如何摆脱它们的任何想法?
谢谢
其他人已经解释过,这可能是一个突出显示空格或制表符的搜索,或者(更有可能)它可以突出显示混合缩进(在python中特别适用于它的价值).我发现这个非常有用.
无论如何,根据原因,有很多选项可以整理你的突出显示:
要清理行尾空格(如混乱所述),请使用以下内容:
:%s/ \+//
Run Code Online (Sandbox Code Playgroud)
可能是最有用的一个:整理标签:
如果您使用空格进行缩进:
:set expandtab
:retab
Run Code Online (Sandbox Code Playgroud)
如果您使用标签:
:set noexpandtab
:retab!
Run Code Online (Sandbox Code Playgroud)
如果您在其他地方使用标签进行缩进和空格处理:
:set expandtab
:retab
:set noexpandtab
:execute '%s@^\( \{'.&ts.'}\)\+@\=repeat("\t", len(submatch(0))/'.&ts.')@'
Run Code Online (Sandbox Code Playgroud)
我将最后一行映射到一个名为的命令:RetabIndents.所有这些都假设你的tabstop设置是正确的(它应该set ts=2根据你的图片设置).就个人而言,我也建议保持shiftwidth相等tabstop,所以set ts=2 sw=2.
您可能还能够摆脱简单的gg=G(自动缩进整个文件).但是,这在某些语言中不起作用(特别是python,因为任何编辑器都无法知道哪些行应缩进到哪个级别).
暂时关闭基于搜索的突出显示:
:noh
Run Code Online (Sandbox Code Playgroud)
或者永久(把它放在.vimrc中):
:set nohlsearch
Run Code Online (Sandbox Code Playgroud)
或者是一个快速的快捷方式,当你使用它并且不再需要它时:
:nnoremap <ESC> :noh<CR><ESC>
Run Code Online (Sandbox Code Playgroud)
要关闭缩进突出显示,您必须确定使用哪个突出显示组,这有点复杂并且可能最容易读取.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>
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过搜索.vim/.vimrc/_vimrc/vimfiles配置中命令行上报告的名称并注释掉任何相关内容来清除突出显示组.
欲获得更多信息
:help :s
:help 'expandtab'
:help :retab
:help :execute
:help 'tabstop'
:help :noh
:help 'hlsearch'
Run Code Online (Sandbox Code Playgroud)