Existe-t-il un moyen d'afficher les pièces pliées sous forme d'arbre?

10

Le pliage est utile pour masquer des parties du document. Une représentation visuelle de la structure pliante sous forme d'arbre serait utile pour comprendre la structure du document en un coup d'œil.

Demetris
la source

Réponses:

11

Vous pouvez utiliser :set foldcolumn=<number>pour afficher une <number>colonne large qui essaie de visualiser les niveaux de pliage. Il ressemblerait à quelque chose comme ceci, par défaut (avec une méthode de pliage de marqueur, en utilisant {{{et }}}):

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

Cependant, cela consomme beaucoup de biens immobiliers horizontaux. Une autre méthode consisterait à écrire une foldtext()implémentation personnalisée qui lit le niveau de pliage avec foldlevel()et formate en conséquence. Cela gaspillera moins d'espace horizontal, mais ne sera pas vraiment utile pour comprendre visuellement l'arbre, car vous ne pouvez pas voir les plis sous un pli effondré. Par exemple, votre .vimrc:

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

Il existe des plugins qui fournissent également des visualisations à la demande de la hiérarchie des plis, tels que folddigest.vim . Ils fonctionnent essentiellement en analysant le niveau de pliage de chaque ligne, en créant une structure de données appropriée et en vidant une visualisation de la structure de données dans un nouveau tampon. Vous pourriez probablement adapter la technique à vos propres besoins.

Vous voudrez peut-être également regarder les plugins qui fournissent des "guides de retrait", comme celui-ci . Je ne les ai jamais utilisés personnellement et j'entends dire qu'ils causent des problèmes de performances à certaines personnes car ils impliquent généralement de générer de nombreux faits saillants de correspondance personnalisés via matchadd(), mais votre kilométrage peut varier.


la source