Vimを10年間使用しているにもかかわらず、折り畳みに苦労することがあります。この質問のすべては、Vim7.3に.vimrcがなくても再現可能です。デフォルトのfoldmarkersでfoldmethod=markerを使用しています。
次のネストされたフォールド構造を検討してください(foldmethod = markerおよびデフォルトマーカーを使用)。最初の列は行番号です(fold0のインデントはゼロです)。
1|{{{ fold0
2| {{{ fold1
3| {{{ fold2
4| }}}
5| }}}
6|}}}
fold1
とが両方とfold2
も閉じていて、カーソルが2行目にあるとします。を使用して閉じた折り目をヤンクして配置できますyyp
が、新しく挿入された折り目はすべて開いています。
私が欲しいのは、「put」コマンドの結果として生じる折り目を閉じることです。あるいは、「置く」後にそれらを閉じる便利な方法はありますか?つまり、この位置から(6行目にカーソルがあります):
1|{{{ fold0
2|+--- 4 lines: fold1----------------------------------------
6| {{{ fold3
7| {{{ fold4
8| }}}
9| }}}
10|}}}
fold3を閉じるために使用できますzc
が、fold4は開いたままになりzo
ます。代わりにを使用するzC
と、fold3とfold 0が閉じますが、fold4は開いたままになります2zo
。これは、再帰的なフォールドクロージングが機能することを期待する方法ではありません。zc
含まれているすべてのフォールドを達成するだけでなく、再帰的に閉じる方法はありますか?
私が働いている会社は、フォールドが明示的なフォールドレベルなしでペアを一致させることによって定義されることを指定しているので、明示的なフォールドレベルを含むソリューションは役に立ちません。