我想在vim中找到一种方便地可视化Python代码各个缩进级别的方法。如果当前行开头始终有一个垂直标尺,这将非常有帮助。这样我就可以浏览代码,看看当前块在哪里结束。是否有任何插件可以实现这一点?
我想在vim中找到一种方便地可视化Python代码各个缩进级别的方法。如果当前行开头始终有一个垂直标尺,这将非常有帮助。这样我就可以浏览代码,看看当前块在哪里结束。是否有任何插件可以实现这一点?
首先想到的是您可以使用一个实现 代码折叠 的插件来受益。
这里有一个带有示例的教程 (滚动到“代码折叠”),推荐使用 "Efficient python folding" vim插件。
你可以为它定义自己的语法项(或使用匹配项)。 快速而简单的解决方案:
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
在vim中(无需插件):
:set list
默认情况下,将显示制表符为'^I'和EOL为'$'。
使用
:set lcs=tab:>>
您可以将'^I'设置为'>'(有关更多信息,请参见:help listchars)。
我不确定,但应该有另一个选项来设置制表符宽度。
此外,您可以设置
:set autoindent
对于Python。
我认为你要找的命令是"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版本。
list
和lcs
将不会显示任何内容。而对于Python来说,expandtab
可能更好。 - ZyX