Existe uma maneira de exibir peças dobradas como uma árvore?

10

Dobrar é útil para ocultar partes do documento. Uma representação visual da estrutura dobrável como uma árvore seria útil para entender rapidamente a estrutura do documento.

Demetris
fonte

Respostas:

11

Você pode usar :set foldcolumn=<number>para exibir uma <number>coluna ampla que tenta visualizar os níveis de dobra. Seria algo parecido com isto, por padrão (com um método de dobra de marcador, usando {{{e }}}):

-    {{{ Top Level Fold
|-   {{{ Nested Fold
||-  {{{ Deepest Fold
|||  }}}
||   }}}
|-   {{{ Another Nested Fold
||   }}}
|    }}}

No entanto, isso consome bastante imóveis horizontais. Outro método seria escrever uma foldtext()implementação personalizada que leia o nível de dobra foldlevel()e formate adequadamente. Isso desperdiçará menos espaço horizontal, mas não será realmente tão útil para entender visualmente a árvore, pois você não pode ver as dobras embaixo de uma dobra recolhida. Por exemplo, seu .vimrc:

set foldtext=CustomFoldText()
function! CustomFoldText()
  let line = getline(v:foldstart) . "..."
  return repeat("--| ", v:foldlevel) . line
endfunction

Existem plugins que fornecem visualizações sob demanda da hierarquia de dobras, como folddigest.vim . Eles funcionam, essencialmente, analisando o nível de dobra de cada linha, construindo uma estrutura de dados apropriada e transferindo uma visualização da estrutura de dados para um novo buffer. Você provavelmente poderia adaptar a técnica às suas próprias necessidades.

Você também pode procurar plugins que fornecem "guias de recuo", como este . Nunca os usei pessoalmente e soube que eles causam problemas de desempenho a algumas pessoas, pois geralmente envolvem a geração de muitos destaques de correspondência personalizados matchadd(), mas sua milhagem pode variar.


fonte