私は、cファイルの非常にコンパクトなトップレベルのフォールドを作成する単純なVimスクリプトを作成しようとしています。理想的には、このコードで実行された場合:
static void funca(...)
{
...
}
/* Example comment */
static void funcb(...)
{
...
}
次に、閉じたときに次のように見える折り目を作成します。
+-- x Lines: static void funca(...)----------------------
+-- x Lines: static void funcb(...)----------------------
したがって、基本的にはfoldmethod = syntax with foldlevel = 1のようになりますが、各折り畳みは1行上から始まり、さらに下に伸びて後続のすべての空白行が含まれる点が異なります。
私はこれらの折り畳みの1つを作る方法を知っています(foldmethod = manualと仮定して):
/^{<cr>kVnn?^$<cr>zf
しかし、それを関数に入れる方法がわかりません。これが私の努力です:
function Cfold()
set foldmethod=manual " Manual folds
ggzE " Delete all folds
while (/^{<cr>) " Somehow loop through each match
kVnn?^$<cr>zf " This would work fine except for the last function
endwhile
endfunction
map <Leader>f :call Cfold()<cr>
しかし、それは有効ではありません。関数がどのように機能するか完全にはわかりません。また、ファイル内の最後の関数では「^ {」が再度検出されないため、機能しません。誰かが私がこれを機能させるのを手伝ってくれて、どういうわけかファイルの最後の関数のケースを追加してくれたら、私は非常に感謝しています。
前もって感謝します :)