Embora não tenham um plug-in para você, há algumas respostas úteis em essa pergunta do stackoverflow .
Em particular, você pode tentar definir set foldnestmax=2 . Isso fará dobras indesejadas em funções de nível superior, mas de outra forma satisfará suas necessidades. foldnestmax diz: não dobre nada mais profundo que x (em oposição ao foldlevel, que diz "dobra tudo mais profundo que x"). Se você quer que o dobramento seja inteligente o bastante para encontrar funções onde quer que ele esteja, você precisará definir foldexpr .
Se você usar o foldexpr, sua melhor aposta seria jogar com o dobramento básico no vimscript até pegar o jeito e depois mexer no código de um dos plug-ins que você forneceu. Certifique-se de set foldcolumn=1 (ou maior) para ver as dobras que você está definindo. Acredito que você basicamente incrementará sua dobra apenas se vir class ou def , mas poderá precisar de v:foldstart e v:foldlevel para determinar quando as dobras terminarão.
Além disso, tente usar zO para abrir recursivamente uma dobra (assim, se você desdobrar uma função de nível superior, tudo nela será desdobrado).