Vimでは、通常、ほとんどのファイルタイプでfoldmethod
をindent
に設定します。一般的に、私はすべての折り目を開いた状態でファイルを開くのが好きです。ただし、すぐに使用を開始すると便利です zm 一度に1レベルずつ、ファイル全体でフォールドをグローバルに閉じ始めることで、詳細を邪魔することなくファイルの全体的な構造を確認できます。
私が見つけた唯一の一般的な解決策は、foldlevelstart
を非常に高い数値に設定することです。 99、すべてのファイル(異なるファイルには異なるレベルの最大インデントがあることを念頭に置いて)が完全に展開され始めることを確認します。しかし、私はそれから使用する必要があります zmfoldlevel
をファイルの最大フォールドレベル(通常は99よりはるかに小さいレベル)まで繰り返し下げることは、面倒で実用的ではありません。 vimコマンドラインを使用して手動でfoldlevel
を設定することもできますが、それでもファイルの最大インデントを知る必要があります。
foldlevel
をファイル自体の現在の最大インデント/フォールドレベルよりも正確に1つ多く設定してファイルを開く実用的な方法はありますか?
たとえば、次のファイルがあるとします。
a
b
c
d1
d2
e
f1
f2
の最初のキー押下 zm これを表示します:
a
b
c
+-- 2 lines: d1------
e
+-- 2 lines: f1------
(ただし、ファイルの最初の最大インデントが任意の値になる可能性がある一般的な場合に機能するはずです)。
これにより、現在のファイルで最も高いフォールドレベルが検索されます。
:let &foldlevel = max(map(range(1, line('$')), 'foldlevel(v:val)'))
これを自動的に設定するには、:autocmd
を使用できます。
:autocmd BufWinEnter * let &foldlevel = max(map(range(1, line('$')), 'foldlevel(v:val)'))
オプション set nofoldenable
すべての折り目を開いた状態でファイルを開始できます
zr
を使用する代わりに、zR
を使用すると、すべてのフォールドが開きます。同様に、zM
はすべてのフォールドを閉じます。