我正在尝试制作一个简单的 Vim 脚本,该脚本将为 c 文件创建非常紧凑的顶级折叠。理想情况下,如果它在此代码上运行:
static void funca(...)
{
...
}
/* Example comment */
static void funcb(...)
{
...
}
然后它会创建折叠,关闭时看起来像这样:
+-- x Lines: static void funca(...)----------------------
+-- x Lines: static void funcb(...)----------------------
所以基本上它就像 foldmethod=syntax with foldlevel=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>
但它是无效的,我不完全确定函数是如何工作的。此外,它不适用于文件中的最后一个函数,因为它不会再次找到 '^{'。如果有人可以帮助我完成这项工作,并以某种方式为文件中的最后一个函数添加一个案例,我将非常感激。
提前致谢 :)