使用 Vim 折叠 Python 代码

问题描述 投票:0回答:4

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

python vim folding
4个回答
9
投票

描述

由于 Python 代码依赖于重要的空格而不是显式的块分隔符,因此正确折叠 Python 代码可能会很棘手。与 Vim 捆绑在一起的 Python 语法定义根本不包含任何折叠指令,最简单的解决方法是

:set foldmethod=indent
,这通常最终会折叠得比你真正想要的要多得多。

不乏用于改进 Python 折叠的 Vim 插件,但大多数似乎都受到拼凑算法的困扰,在极端情况下存在奇怪、棘手的错误。 SimpylFold 的目标正如它的名字所暗示的那样:Python 的简单、正确的折叠。它只不过是它需要的那样:它正确地折叠类和函数/方法定义,并使循环和条件块保持不变。不涉及任何废话:不会乱搞不相关的选项(其他几个插件就是这么做的),不会选择让你摸不着头脑的算法(因为只有一个是正确的);它只是有效,简单。

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


0
投票

我几乎总是使用

set foldmethod=indent
,它几乎可以完成你想要它做的事情(除了折叠类全局变量)。

请参阅帮助以了解如何调整它。


0
投票

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

我使用这个脚本的时间不长,所以它可能还有其他问题。祝你好运!


0
投票

如果你只想折叠到功能级别,那么我推荐以下 - https://github.com/campbsb/vim-python-folding

只有一个文件,易于安装和尝试。

© www.soinside.com 2019 - 2024. All rights reserved.