Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用vim在折叠折叠中显示嵌套部分?_Vim_Folding_Outline - Fatal编程技术网

是否可以使用vim在折叠折叠中显示嵌套部分?

是否可以使用vim在折叠折叠中显示嵌套部分?,vim,folding,outline,Vim,Folding,Outline,当折叠在vim中折叠时,所有嵌套标题都隐藏起来,这样您就看不到里面有什么了。我很好奇是否有人知道是否可能或者是否有一个foldtext函数的解决方案(或者通过另一种方法),可以在折叠折叠时显示折叠内部的部分 我正在寻找一种更能显示褶皱的东西: + -- 2000 TopSection1 " Fold Level 1 + --- 500 TopSection1 : ChildSection1

当折叠在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

我一直在四处挖掘,但还没有找到一种方法来实现这一点(或者如果可能的话)。有什么建议吗?

我使用zrzm常规命令打开和关闭另一个折叠关卡。 我同意zr也将显示折叠层和子层之间的文本;因此,它没有完全解决你的问题。
似乎更好的方法是使用foldmethod=语法,然后使用全局(g)过滤所有折叠线基于foldmethod语法的正则表达式的命令。

您必须使用
foldtext
,还必须解析节的内容以获取您想要显示的内容。

以下命令获取所有折叠行,中间没有正文文本:

:g/{{{/
它适用于下面的示例,该示例包含多个嵌套的foldmethod=marker和default({{{})mark折叠:

运行:g/{{{{/命令后,您会得到以下结果:

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”,打开一个新的缓冲区并粘贴reg。 如果默认值为“折叠”,则可能需要使用
zR
展开结果

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