Czy istnieje sposób wyświetlania złożonych części jako drzewa?

10

Składanie jest przydatne, aby ukryć części dokumentu. Wizualna reprezentacja składanej struktury jako drzewa byłaby przydatna do szybkiego zrozumienia struktury dokumentu.

Demetris
źródło

Odpowiedzi:

11

Możesz użyć :set foldcolumn=<number>do wyświetlenia szerokiej <number>kolumny, która próbuje wizualizować poziomy zagięcia. Domyślnie wyglądałby mniej więcej tak: (przy użyciu metody markera, przy użyciu {{{i }}}):

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

Zużywa to jednak sporo horyzontalnych nieruchomości. Inną metodą byłoby napisanie niestandardowej foldtext()implementacji, która odczytuje poziom składania foldlevel()i odpowiednio formatuje. Spowoduje to marnowanie mniejszej przestrzeni poziomej, ale tak naprawdę nie będzie tak pomocne dla wizualnego zrozumienia drzewa, ponieważ nie widać fałd pod zwiniętym fałdem. Na przykład .vimrc:

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

Istnieją wtyczki, które zapewniają wizualizacje hierarchii foldów na żądanie, takie jak folddigest.vim . Działają w zasadzie przez analizowanie poziomu zagięcia każdej linii, budowanie odpowiedniej struktury danych i zrzucanie wizualizacji struktury danych do nowego bufora. Prawdopodobnie możesz dostosować technikę do własnych potrzeb.

Możesz także przyjrzeć się wtyczkom, które zawierają „prowadnice wcięć”, takie jak ten . Nigdy ich osobiście nie używałem i słyszę, że powodują problemy z wydajnością niektórych osób, ponieważ generalnie wiążą się z generowaniem wielu niestandardowych skrótów meczów za pośrednictwem matchadd(), ale przebieg może być różny.


źródło