vim 中 Python 的最佳代码折叠插件?

ipa*_*ola 5 vim python

我编写的所有代码都使用 vim。我最大的问题是找不到好的 Python 代码折叠插件。我发现了两到三个流行的使用缩进的方法,但它们往往折叠得太少或太多。理想情况下,这就是我希望它折叠的内容:

  1. 折叠所有顶级课程。
  2. 折叠所有顶级功能。
  3. 折叠所有类方法

仅此而已。我目前使用的插件还不错,但它倾向于在方法中折叠功能。它也会对类方法中具有不同缩进级别的代码块感到困惑(例如:for 循环后跟更多代码将导致在 for 循环之后折叠代码)。

有谁知道满足这些要求的插件还是我应该弄清楚如何编写自己的插件?

这些是我过去尝试过的事情:

idb*_*rii 2

虽然他们没有适合您的插件,但关于此 stackoverflow 问题有一些有用的答案。

特别是,您可以尝试设置set foldnestmax=2. 这将在顶级函数中进行不必要的折叠,但在其他方面可以满足您的要求。foldnestmax表示不要折叠任何比 x 更深的东西(与 Foldlevel 相反,它表示折叠比 x 更深的所有东西)。如果您希望折叠足够智能,可以在任何位置找到函数,那么您需要设置foldexpr.

如果您使用foldexpr,最好的选择是在vimscript 中使用基本折叠,直到掌握它的窍门,然后修补您提供的插件之一的代码。请务必set foldcolumn=1(或更大),以便您可以看到您正在设置的折叠。class我认为只有当您看到或 时,您才会基本上增加折叠def,但您可能需要v:foldstartv:foldlevel来确定折叠何时结束。

另外,尝试使用zO递归打开折叠(因此,如果您展开顶级函数,则其中的所有内容都会展开)。