Есть ли способ отобразить сложенные детали в виде дерева?


10

Складывание полезно, чтобы скрыть части документа. Визуальное представление структуры сгиба в виде дерева было бы полезно для быстрого понимания структуры документа.

Ответы:


11

Вы можете использовать, :set foldcolumn=<number>чтобы отобразить <number>широкий столбец, который пытается визуализировать уровни сгиба. По умолчанию это выглядело бы примерно так (с помощью метода маркерного сгиба с использованием {{{и }}}):

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

Однако, это потребляет довольно много горизонтальной недвижимости. Другой метод - написать собственную foldtext()реализацию, которая считывает уровень сгиба foldlevel()и форматирует его соответственно. Это будет тратить меньше горизонтального пространства, но на самом деле не будет таким полезным для визуального понимания дерева, поскольку вы не можете видеть складки под свернутой складкой. Например, ваш .vimrc:

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

Существуют плагины, которые предоставляют визуализацию иерархии сгиба по запросу, например, folddigest.vim . По сути, они работают путем анализа уровня сгиба каждой строки, создания соответствующей структуры данных и вывода визуализации структуры данных в новый буфер. Возможно, вы могли бы адаптировать технику к вашим собственным потребностям.

Возможно, вы также захотите взглянуть на плагины, которые предоставляют «руководства по отступам», такие как этот . Я никогда не использовал их лично, и я слышал, что они вызывают проблемы с производительностью некоторых людей, так как они обычно включают в себя создание большого количества пользовательских матчей matchadd(), но ваш пробег может варьироваться.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.