当折叠在vim中折叠时,所有嵌套标题都被隐藏起来,这样你就看不到里面的内容了。我很好奇是否有人知道它是否可能,或者是否有foldtext
函数(或通过其他方法)的解决方案,可以在折叠折叠时显示折叠内的部分。
我正在寻找能够显示折叠的东西:
+ -- 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
我一直在四处寻找,但还没有找到一种方法来完成这项工作(或者如果可能的话)。有什么建议吗?
答案 0 :(得分:1)
您必须使用foldtext
,但也要解析该部分的内容以获取您想要显示的内容。
答案 1 :(得分:1)
以下命令获取所有折叠行,其中没有正文:
:g/{{{/
它适用于下面这个包含多个嵌套折叠的示例,其中包含foldmethod = marker和default({{{)mark:
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/*}}}*//*}}}*//*}}}*/
运行:g / {{{/ command,你得到这个:
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
它将{{{模式注册到" a",打开一个新缓冲区并粘贴注册表。
如果您的默认设置为“折叠折叠”,则可能需要使用zR
展开结果。
答案 2 :(得分:-1)
我使用 zr 和 zm 普通命令来打开和关闭另一个折叠级别。 我同意 zr 也会在折叠级别和子级别之间显示文本;因此它没有完全解决你的问题。 似乎更好的方法是使用foldmethod =语法,然后使用基于foldmethod语法的正则表达式的全局(g)命令过滤所有折叠行。