Como posso definir o foldlevelstart no vim para simplesmente dobrar nada inicialmente, ainda permitindo que o zr funcione imediatamente?

8

No vim, normalmente defino foldmethod para indent para a maioria dos tipos de arquivo. Em geral, eu gosto de arquivos para abrir com todas as dobras abertas. No entanto, é útil começar imediatamente usando zm para começar a fechar as dobras globalmente no arquivo, um nível por vez, permitindo-me ver a estrutura geral do arquivo sem detalhes atrapalhando.

A única solução geral que encontrei é definir foldlevelstart para um número muito alto, por ex. 99, para certificar-se de que todos os arquivos (tendo em mente que arquivos diferentes terão níveis diferentes de recuo máximo) iniciem completamente o desdobramento. No entanto, eu teria que usar zm repetidamente para reduzir foldlevel para o nível máximo de dobra do arquivo, normalmente muito menos do que 99, o que é complicado e impraticável. Eu poderia definir foldlevel manualmente usando a linha de comando do vim, mas ainda precisaria saber o recuo máximo no arquivo.

Existe uma maneira prática de abrir um arquivo com foldlevel definido para exatamente mais um que o nível máximo de recuo / dobra atual no próprio arquivo?

Por exemplo, dado o seguinte arquivo:

a
  b
    c
      d1
      d2
    e
      f1
      f2

O primeiro pressionamento de tecla de zm mostraria isso:

a
  b
    c
+--  2 lines: d1------
    e
+--  2 lines: f1------

(Observe, no entanto, que ele deve funcionar para o caso geral em que o recuo máximo inicial do arquivo pode ser qualquer valor).

    
por Andrew Ferrier 17.03.2013 / 18:32

3 respostas

8

Isso encontra o nível de desistência mais alto no arquivo atual:

:let &foldlevel = max(map(range(1, line('$')), 'foldlevel(v:val)'))

Para definir isso automaticamente, você pode usar um :autocmd :

:autocmd BufWinEnter * let &foldlevel = max(map(range(1, line('$')), 'foldlevel(v:val)'))
    
por 17.03.2013 / 20:48
0

Em vez de usar zr , use zR , que abrirá todas as dobras. Da mesma forma, zM fechará todas as dobras.

    
por 17.03.2013 / 18:52
-1

A opção set nofoldenable permite que você inicie o arquivo com todas as dobras abertas

    
por 20.07.2018 / 22:57