我在vim中寻找一种方法来轻松可视化python代码的各种缩进级别。如果在当前行的开头始终存在垂直规则,则会有所帮助。这样我就可以扫描代码以查看当前块的结束位置。有没有插件可以做到这一点?
答案 0 :(得分:5)
您可以简单地模拟缩进指南。在我看来,它更简单,更有效。请查看我的answer question about indentation guides。
答案 1 :(得分:1)
首先想到的是,您可以从实现code folding的插件中受益。
这是tutorial with examples(向下滚动到“代码折叠”),建议使用"Efficient python folding" plugin for vim。
screenshot http://dancingpenguinsoflight.com/wp-content/uploads/2009/02/folded_functions.png
答案 2 :(得分:0)
在vim中(不需要插件):
:设置列表
默认情况下会将标签显示为“^ I”,将EOL显示为“$”。
与
:设置lcs = tab:>>
你要将'^ I'设置为'>' (详见:帮助列表)。
我不确定,但应该有另一个选项来设置标签宽度。
你也可以设置
:设置自动加入
for python
答案 3 :(得分:0)
我认为您正在寻找的命令是“colorcolumn”,我认为这是vim 7.2或7.3的新功能。
您可以使用自动命令触发器CursorMoved
进行操作autocmd CursorMovedI * set colorcolumn=match(getline("."),"\S")
您可能需要使用中间变量等来玩这个。
这将做什么(如果适当地隐藏在函数内),将一条垂直线放在当前行的起始字符处。这可能很方便,但应该只能进行切换。
编辑:事实证明这比我原先想象的要复杂一些。基本上你必须消除文字标签的效果(如果它们出现在你的文件中)
autocmd CursorMoved * let &colorcolumn=matchend(substitute(getline("."),'\t',repeat(" ",&ts),'g'),"\\S")
当我第一次把它放在一起时,我觉得它很傻,但只是玩了几分钟,我就像效果一样。
请注意,您可能需要或不需要CursorMovedI版本。
答案 4 :(得分:0)
您可以为它定义自己的语法项(或使用匹配项)。快速而肮脏的解决方案:
let colors=["red", "white", "yellow", "green", "blue"]
let matchids=[]
for level in range(1, len(colors))
execute "hi IndentLevel".level." ctermbg=".colors[level-1]." guibg=".colors[level-1]
call add(matchids, matchadd('IndentLevel'.level, '^ '.repeat(' ', level-1).'\zs '))
endfor
这将突出显示五种不同颜色的第一个缩进级别。
要禁用:
while !empty(matchids)
call matchdelete(remove(matchids, 0))
endwhile