在Vim中折叠Python代码
我试过很多Python代码折叠的插件,也看到有人在这里问过这个问题,但这些插件似乎都没什么用,无法以我想要的方式实现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
我一直在寻找一个折叠Python方法的方式,这个方式可以在方法签名跨越多行时仍然保留整个签名。这个脚本对我来说有效。不过,要让多行签名正常工作,你需要在你的.vimrc文件中添加“let g:ifold_mode=2”。
我使用这个脚本的时间不长,所以可能还有其他问题。祝你好运!
0
我几乎总是使用 set foldmethod=indent
这个设置,它能做到你想要的功能,除了不能折叠类的全局变量。
你可以查看帮助文档,了解如何调整这个设置。
9
描述
因为Python代码依赖于空白字符来区分代码块,而不是用明确的符号,所以正确折叠Python代码有点棘手。Vim自带的Python语法定义根本没有折叠的指令,最简单的解决办法是使用
:set foldmethod=indent
,但这样通常会折叠比你想要的更多的内容。虽然有很多Vim插件可以改善Python代码的折叠,但大多数插件的算法都很复杂,常常在一些特殊情况下出现奇怪的bug。SimpylFold的目标正如它的名字所暗示的那样:为Python提供简单而正确的折叠。它只做必要的事情:正确折叠类和函数/方法的定义,而不去碰你的循环和条件块。没有多余的东西:不需要处理无关的选项(而其他一些插件就是这样),也没有让你头疼的算法选择(因为只有一个是正确的);它就是这么简单,直接好用。