我是一位长期的Vim用户(3或4年),他最近开始处理一些深层嵌套的代码。此代码使用空格缩进,而不是制表符。我想要一些干净且不分散注意力的缩进指示,以帮助跟踪我在看多层次深层时所处的代码块。
:set list
仅显示标签和结束字符。我找到了一个插件(目前似乎无法挖掘出来),它会逐渐突出显示每个缩进级别,但这在视觉上没有吸引力。理想情况下,我希望在每个缩进级别看到细垂直线。许多新奇的编辑都有这个功能,但我还是不愿意放弃Vim。
有谁知道如何实现这一目标?
答案 0 :(得分:66)
注意:这个答案有点晚了,也是一个无耻的插件:))
无论如何,请尝试我的Indent-Guides.vim插件。它的创建是为了抓住我自己的痒,因为vim中缺少缩进指南。我厌倦了等待别人过来建造它,所以我自己就做了。
特点:
以下是该插件的一些屏幕截图:put your mouse here and click。
答案 1 :(得分:27)
您可以使用标签显示缩进指南并在保存文件之前删除标签:
" use 4 spaces for tabs
set tabstop=4 softtabstop=4 shiftwidth=4
" display indentation guides
set list listchars=tab:❘-,trail:·,extends:»,precedes:«,nbsp:×
" convert spaces to tabs when reading file
autocmd! bufreadpost * set noexpandtab | retab! 4
" convert tabs to spaces before writing file
autocmd! bufwritepre * set expandtab | retab! 4
" convert spaces to tabs after writing file (to show guides again)
autocmd! bufwritepost * set noexpandtab | retab! 4
答案 2 :(得分:27)
如果您使用空格缩进代码,则可以尝试我的插件:https://github.com/Yggdroot/indentLine,它会显示细垂直线但不会显示粗垂直线,如上面的答案所示。如果您使用制表符缩进代码,只需:set list lcs=tab:\|\ (here is a space)
答案 3 :(得分:15)
这将在您键入时显示指示缩进级别的点。当你离开这条线时,这些圆点会神奇地消失。
set list listchars=tab:»-,trail:·,extends:»,precedes:«
E.g:
def test():
....print('indentation level 1')
非常酷吧?
答案 4 :(得分:15)
最有效的解决方案可能是“绘制”缩进指南 使用匹配突出显示。要了解它有何帮助,请看这个例子:
: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()
。当然,您可以更改突出显示组
(或创建一个特殊的仅用于缩进指南),设置方便
为此映射 1 和/或从autocmd
为某个文件调用它
类型。
1 缩进指南突出显示我.vimrc
的配置
档案:https://gist.github.com/734422
答案 5 :(得分:1)
试试这个VIM插件BlockHL 它以不同的方式对每个连续级别的缩进进行颜色编码。
编辑:你在用什么语言?这个插件适用于C风格的语言。答案 6 :(得分:0)
使用Indent-Guides.vim插件,并在需要时切换使用ig。有时它可能很烦人:)但