可能最有效的解决方案是使用匹配突出显示“绘制”缩进指南 。要了解它如何帮助,看看下面这个例子:
:match Search /\%(\_^\s*\)\@<=\%(\%1v\|\%5v\|\%9v\)\s/
它突出(使用搜索高亮组,它可以使用任何 等,当然)的第一,第五,第九(它可以是继续) 虚拟列占用的空格符号前面没有任何内容,但是从 开始的行中有空格。所以,这产生四空间缩进,突出显示 三个层次的深度。
为了概括这个想法它仍然只是产生像根据以上提及的是 图案当前缓冲区的textwidth
和shiftwidth
(处理更深缩进水平和适当的缩进宽度)。这个任务可能是 只是自动化,如下面的功能所示。
function! ToggleIndentGuides()
if exists('b:indent_guides')
call matchdelete(b:indent_guides)
unlet b:indent_guides
else
let pos = range(1, &l:textwidth, &l:shiftwidth)
call map(pos, '"\\%" . v:val . "v"')
let pat = '\%(\_^\s*\)\@<=\%(' . join(pos, '\|') . '\)\s'
let b:indent_guides = matchadd('CursorLine', pat)
endif
endfunction
每当你需要缩进导游的缓冲时间,可以通过 :call ToggleIndentGuides()
接通。当然,您可以更改突出显示组 (或仅为缩进指南创建一个特殊的缩略图),为此设置一个方便的 映射并且/或者从autocmd
为某些文件 类型调用它。
缩进引导从我.vimrc
文件突出配置:https://gist.github.com/734422
看看https://github.com/nathanaelkane/vim-indent-guides – 2014-02-27 16:47:00