我已经尝试了一堆Python代码折叠插件,我已经看过这个问题一次here,但它们对于以这种方式实现Python代码折叠似乎没有太大用处:
class myClass(models.Model):
[folded code]
class Meta:
[folded code]
def __unicode__(self):
[folded code]
def save(self, *args, **kwargs):
[folded code]
所以我的问题是,是否有任何Python代码折叠插件可以做到这一点?到目前为止我还没有找到任何东西,我已经尝试了很多这样的Vim插件已经
答案 0 :(得分:6)
描述
由于它依赖于重要的空白而不是显式的块分隔符,因此正确折叠Python代码可能会非常棘手。与Vim捆绑在一起的Python语法定义根本不包含任何折叠指令,最简单的解决方法是
:set foldmethod=indent
,它通常最终折叠的次数比实际要多得多。用于改进Python折叠的Vim插件并不缺乏,但大多数似乎都受到拼凑在一起的算法的影响,在角落情况下会出现奇怪的,难以处理的错误。 SimpylFold的目的正是它的名字所暗示的:简单,正确的Python折叠。它只不过是它需要:它正确地折叠类和函数/方法定义,并保持循环和条件块不受影响。没有涉及到BS:没有无关紧要的选项(其他几个插件都有),没有选择算法来解决问题(因为只有一个是正确的);它只是起作用。
答案 1 :(得分:0)
我几乎总是使用set foldmethod=indent
,它几乎完成了你想做的事情(除了折叠类全局变量)。
请参阅如何调整它的帮助。
答案 2 :(得分:0)
我一直在寻找同样的东西,一种python的折叠方法,即使跨越多行也会留下整个方法签名。这script对我有用。但是,要使多行签名起作用,您需要在.vimrc文件中添加“let g:ifold_mode = 2”。
我没有长时间使用此脚本,因此可能存在其他问题。祝你好运!