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

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

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

  1. 折叠所有顶级类。
  2. 折叠所有顶层函数。
  3. 折叠所有类方法

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

是否有人知道可以满足这些要求的插件,或者我应该弄清楚如何编写自己的插件?

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

答案1

简易折叠

我认为这是 vim 中 python 的最佳折叠插件。

它只不过是它需要做的:它正确地折叠类和函数/方法定义,并且不影响你的循环和条件块。

https://github.com/tmhedberg/SimpylFold

答案2

虽然他们没有适合你的插件,但有一些有用的答案这个 stackoverflow 问题

具体来说,您可以尝试设置set foldnestmax=2。这将在顶级函数中执行不必要的折叠,但除此之外可以满足您的要求。foldnestmax表示不要折叠任何深度超过 x 的内容(与 foldlevel 相反,foldlevel 表示折叠深度超过 x 的所有内容)。如果您希望折叠足够智能,可以找到任何函数,那么您需要设置foldexpr

如果您使用 foldexpr,最好的办法是先在 vimscript 中尝试基本的折叠,直到您掌握它,然后再修改您提供的插件之一的代码。请确保(或更大),以便您可以看到您设置的折叠。我认为您只有在看到或 时set foldcolumn=1才会增加折叠,但您可能需要和来确定折叠何时结束。classdefv:foldstartv:foldlevel

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

相关内容