后果这个答案在这里,我正在尝试为 vim 编写一个foldexpr
相当于foldmethod=indent
(作为起点,然后增强它以识别我的自定义标记,请参阅问题以了解更多详细信息)。
我尝试过这个:
set foldmethod=foldexpr
set foldexpr=indent(v:lnum)
但是,这个简单的 HTML 示例却失败了:
<div id="a">
<div id="b">
<div id="c">
<div id="d">
</div>
</div>
<div id="e">
</div>
</div>
</div>
如果我将密钥放在<div id="c">
行上,然后点击zc
,折叠将按预期进行,并且仅折叠该 div。如果我重新打开,然后将密钥放在行上<div id="b">
,然后点击zc
,折叠将失败,因为<div id="e">
未折叠。
如果我切换到foldmethod=indent
,就不会发生这种情况;第二次折叠正确执行。我该如何修复 ,foldexpr
使其表现得像foldmethod=indent
?
答案1
空行应保持前一行的折叠级别。试试这个:
:set foldmethod=expr
:set foldexpr=empty(getline(v:lnum))?'=':indent(v:lnum)/4