使用Vim进行Python代码折叠

时间:2011-09-15 01:19:56

标签: python vim folding

我已经尝试了一堆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插件已经

3 个答案:

答案 0 :(得分:6)

  

描述

     

由于它依赖于重要的空白而不是显式的块分隔符,因此正确折叠Python代码可能会非常棘手。与Vim捆绑在一起的Python语法定义根本不包含任何折叠指令,最简单的解决方法是:set foldmethod=indent,它通常最终折叠的次数比实际要多得多。

     

用于改进Python折叠的Vim插件并不缺乏,但大多数似乎都受到拼凑在一起的算法的影响,在角落情况下会出现奇怪的,难以处理的错误。 SimpylFold的目的正是它的名字所暗示的:简单,正确的Python折叠。它只不过是它需要:它正确地折叠类和函数/方法定义,并保持循环和条件块不受影响。没有涉及到BS:没有无关紧要的选项(其他几个插件都有),没有选择算法来解决问题(因为只有一个是正确的);它只是起作用。

http://www.vim.org/scripts/script.php?script_id=3723

答案 1 :(得分:0)

我几乎总是使用set foldmethod=indent,它几​​乎完成了你想做的事情(除了折叠类全局变量)。

请参阅如何调整它的帮助。

答案 2 :(得分:0)

我一直在寻找同样的东西,一种python的折叠方法,即使跨越多行也会留下整个方法签名。这script对我有用。但是,要使多行签名起作用,您需要在.vimrc文件中添加“let g:ifold_mode = 2”。

我没有长时间使用此脚本,因此可能存在其他问题。祝你好运!