2014-12-10 1 views
2

Когда сгиб сбрасывается в vim, все вложенные заголовки скрыты, так что вы не можете видеть, что внутри. Мне любопытно, знает ли кто-нибудь, возможно ли это или имеет решение для функции foldtext (или другим способом), который может отображать разделы внутри складки при свертывании складки.Можно ли отображать вложенные разделы в свернутой складке с помощью vim?

Я искал что-то, что будет отображаться сгибы больше, как это:

+ -- 2000 TopSection1         " Fold Level 1 
+ --- 500 TopSection1 : ChildSection1     " Fold Level 2 
+ ---- 50 TopSection1 : ChildSection1 : BottomSection1 " Fold Level 3 
+ --- 100 TopSection1 : ChildSection2 : BottomSection1 " Fold Level 2 
+ -- 500 TopSection2         " Fold Level 1 
+ --- 25 TopSection2 : ChildSection1     " Fold Level 2 

Я копался, но не понял, способ сделать эту работу (или, если это возможно). Какие-либо предложения?

ответ

-1

Я использую зр и ZM обычные команды, чтобы открыть и закрыть другой уровень складывания. Я согласен с тем, что zr также отобразит текст между уровнем складчатости и подуровнем; поэтому он не полностью решает ваш вопрос. Кажется, что лучшим способом было бы использовать синтаксис foldmethod =, а затем отфильтровать все складывающиеся линии с помощью глобальной команды (g), основанной на регулярном выражении синтаксиса foldmethod.

1

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

1

следующая команда получает все линии сгиба без текстов тела между:

:g/{{{/ 

Он работает в этом пример ниже, который содержит несколько вложенных складки с foldmethod = маркером и по умолчанию ({{{) знак:

Text 1/*{{{*/ 
some text here 
subtext 1.1/*{{{*/ 
some text here 
subsubtext 1.1.1/*{{{*/ 
some text here/*}}}*/ 
subsubtext 1.1.2/*{{{*/ 
some text here/*}}}*//*}}}*/ 
subtext 1.2/*{{{*/ 
some text here 
subsubtext 1.2.1/*{{{*/ 
some text here/*}}}*/ 
subsubtext 1.2.2/*{{{*/ 
some text here/*}}}*//*}}}*//*}}}*/ 
Text 2/*{{{*/ 
some text here 
subtext 2.1/*{{{*/ 
some text here 
subsubtext 2.1.1/*{{{*/ 
some text here/*}}}*/ 
subsubtext 2.1.2/*{{{*/ 
some text here/*}}}*//*}}}*/ 
subtext 2.2/*{{{*/ 
some text here 
subsubtext 2.2.1/*{{{*/ 
some text here/*}}}*/ 
subsubtext 2.2.2/*{{{*/ 
some text here/*}}}*//*}}}*//*}}}*/ 

После запуска: г/{{{/ команда, вы получите это:

Text 1/*{{{*/ 
subtext 1.1/*{{{*/ 
subsubtext 1.1.1/*{{{*/ 
subsubtext 1.1.2/*{{{*/ 
subtext 1.2/*{{{*/ 
subsubtext 1.2.1/*{{{*/ 
subsubtext 1.2.2/*{{{*/ 
Text 2/*{{{*/ 
subtext 2.1/*{{{*/ 
subsubtext 2.1.1/*{{{*/ 
subsubtext 2.1.2/*{{{*/ 
subtext 2.2/*{{{*/ 
subsubtext 2.2.1/*{{{*/ 
subsubtext 2.2.2/*{{{*/ 

Если вы хотите перенаправить результат в новый буфер, то вы можете запустить:

:let @a='' | execute 'g/{{{/y A' | new | setlocal bt=nofile | put! a 

Он дергает {{{шаблон для регистрации «а», открывает новый буфер и вставляет рег. Затем вам может понадобиться развернуть результат с помощью zR, если по умолчанию «свернуть складки».

Смежные вопросы