Melhor plugin de código dobrável para Python no vim? [fechadas]

5

Eu uso o vim para todo o código que escrevo. Meu maior problema é que não consigo encontrar um bom plugin de código dobrável em Python. Eu encontrei dois e três populares que usam recuo, mas eles tendem a dobrar muito pouco ou muito. Idealmente, isso é o que eu gostaria que ele desse:

  1. Dobre todas as classes de nível superior.
  2. Dobre todas as funções de nível superior.
  3. Dobre todos os métodos de aula

E nada mais. O plugin que estou usando atualmente não é ruim, mas tende a dobrar funções dentro de métodos. Ele também fica confuso sobre blocos de código dentro de um método de classe que têm diferentes níveis de indentação (por exemplo: um loop for seguido por mais código resultaria na dobra do código após o loop for).

Alguém sabe de um plug-in que satisfaz esses requisitos ou eu deveria descobrir como escrever o meu próprio?

Estas são as coisas que tentei no passado:

por ipartola 06.04.2011 / 16:55

2 respostas

2

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).

    
por 25.07.2011 / 23:33
2

SimpylFold

Eu considero este o melhor plugin de folding para python no vim.

It's nothing more than it needs to be: it properly folds class and function/method definitions, and leaves your loops and conditional blocks untouched.

link

    
por 01.12.2016 / 17:01

Tags