答案1
不,严格来说,Vim 中不可能同时激活多个折叠方法。
如果您愿意学习如何编写语法高亮规则并针对要添加标记折叠模拟的语言破解高亮文件,则可以模拟基于标记的折叠。 这样做有几个缺点:
当折叠方法设置为“语法”时,使用标记和手动折叠方法创建/删除折叠的命令(“zf”、“zd”等等)将不起作用。
模拟“强制”折叠级别的标记(例如“
{{{1
“/”}}}1
“)而不是将折叠级别增加/减少一级(例如“{{{
“/”}}}
“)是有问题的;要么您必须完全忽略折叠级别数字,要么冒险干扰(甚至可能破坏)其余基于语法的折叠规则。
我建议,当你发现需要基于标记的折叠时,就完全使用该方法。这可能需要一些额外的时间和精力,但如果你真的需要灵活性,那么这可能是值得的,尤其是考虑到尝试将两者结合起来的困难。
答案2
我也在寻找同样的东西。因为我不想破解语法文件,所以我有一个映射来在折叠方法之间切换。现在我只在语法和标记之间切换:
nmap <Leader>ff :call <SID>ToggleFold()<CR>
function! s:ToggleFold()
if &foldmethod == 'marker'
let &l:foldmethod = 'syntax'
else
let &l:foldmethod = 'marker'
endif
echo 'foldmethod is now ' . &l:foldmethod
endfunction