尽管使用Vim十年,有时候我仍然在折叠中挣扎。这个问题中的所有内容都可以在Vim 7.3中重现,没有.vimrc。我正在使用foldmethod =标记与默认foldMarkkers。复制和关闭Vim中的折叠
考虑以下嵌套折叠结构(使用foldmethod = marker和默认标记)。第一列是行号(fold0具有零缩进)。
1|{{{ fold0
2| {{{ fold1
3| {{{ fold2
4| }}}
5| }}}
6|}}}
假设fold1
和fold2
都关闭,光标在第2行,我可以抽出,并把使用yyp
封闭折,但新插入的褶皱全部开放。
我想要的是由“put”命令导致的折叠被关闭。或者,在“put”之后是否有方便的方法来关闭它们?也就是说,从这个位置(用光标在第6行):
1|{{{ fold0
2|+--- 4 lines: fold1----------------------------------------
6| {{{ fold3
7| {{{ fold4
8| }}}
9| }}}
10|}}}
我可以使用zc
关闭fold3,但折4保持zo
后打开。如果我使用zC
,它会关闭折叠3和折叠0,但当我做2zo
时折叠4仍然打开。这不是我期望递归折叠工作的方式。有没有办法实现zc
,但也递归地关闭所有折叠?
我工作的公司指定折叠是通过匹配对来定义的,没有明确的foldlevel,因此涉及显式foldlevel的解决方案是没有用的。
这是一个非常好的解决方案,但我发现屏幕由于视觉选择而闪烁,相当分散注意力。 –
如果您对此感觉强烈,可以先关闭突出显示('hi Visual ...'),然后再打开。但是这可能比它的价值更麻烦。 –
优秀!在每一种情况下都需要进行一些调整,但你已经解决了这个问题。谢谢。 –