Foldmethod =标记和语法同时?

时间:2011-04-22 15:49:18

标签: vim

同一个文件是否可以根据标记和语法使用折叠?

3 个答案:

答案 0 :(得分:5)

由于foldmethod一次只能设置为一个,我认为你真正做到这一点的唯一方法就是使用:set foldmethod=expr并使用foldexpr破解,甚至然后我不确定它能不能完全按照你想要的那样做。

所以,简短的回答:没有

答案很长:如果你敢于看到能否获得理想的结果,可能会与foldexpr混在一起

答案 1 :(得分:1)

也许您可以通过其他语法规则来模拟您的标记?

但没有更多的投入就很难说。

答案 2 :(得分:1)

AutoFold.vim插件尝试解决此问题:http://www.vim.org/scripts/script.php?script_id=925

作为替代方案,我认为通过为标记引入新的语法规则,我自己会有所改变。不幸的是,这需要在注释的任何语法规则之前声明,否则注释规则将掩盖我们的标记规则。

所以我试图尽早插入我的规则:

:syn clear

:syn region myMarkerFold matchgroup=myDummyGroup start="{{{" end ="}}}" transparent fold

:exec "runtime! syntax/" . &filetype . ".vim"    

它没有奏效。最后一行立即清除了我的自定义规则。删除最后一行,折叠工作,但当然没有语言匹配或突出显示! (顺便说一句,我是在.vim文件上测试它。)