No vim, geralmente defino foldmethod
para indent
a maioria dos tipos de arquivo. Em geral, gosto de abrir arquivos com todas as dobras abertas. No entanto, é útil começar a usar imediatamente zmpara começar a fechar dobras globalmente no arquivo, um nível de cada vez, permitindo-me ver a estrutura geral do arquivo sem que os detalhes atrapalhem.
A única solução geral que encontrei é definir foldlevelstart
um número muito alto, por exemplo, 99, para garantir que todos os arquivos (tendo em mente que arquivos diferentes terão níveis diferentes de recuo máximo) sejam desdobrados completamente. No entanto, eu teria que usar zmrepetidamente para reduzir foldlevel
ao nível máximo de dobra do arquivo, normalmente muito menor que 99, o que é complicado e impraticável. Eu poderia definir foldlevel
manualmente usando a linha de comando vim, mas ainda precisaria saber o recuo máximo no arquivo.
Existe uma maneira prática de abrir um arquivo com o foldlevel
conjunto exatamente um a mais que o nível máximo de avanço / 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 zmmostraria isso:
a
b
c
+-- 2 lines: d1------
e
+-- 2 lines: f1------
(Observe, no entanto, que ele deve funcionar no caso geral em que o recuo máximo inicial do arquivo pode ter qualquer valor).
fonte
zr
comzm
; o último reduz o nível de dobra.zm
= vezes mais (foldlevel subtrair) ezr
= vezes menos (foldlevel add)Respostas:
Este encontra o nível de dobra mais alto no arquivo atual:
Para definir isso automaticamente, você pode usar um
:autocmd
:fonte
foldlevelstart
não tem uma opção como esta.foldlevel
é 0 efoldlevelstart
é -1 quando inicio um arquivo com essas configurações.Em vez de usar
zr
, usezR
, o que abrirá todas as dobras. Da mesma forma,zM
fechará todas as dobras.fonte
zR
(defina o nível de dobra para o nível mais alto) e depoiszm
funcionará. É apenas um passo extra.A opção
set nofoldenable
permite iniciar o arquivo com todas as dobras abertasfonte