【问题标题】:Vim folding for html用于 html 的 Vim 折叠
【发布时间】:2015-09-15 01:27:15
【问题描述】:

所以这个问题可能已经问过几次了,但还没有一个明确的答案。在 vim 中折叠 html 块。

采取以下标记

<html>
  <body>
    <section>
      <ul>
        <li></li>
        <li></li>
      </ul>
    </section>
    <section>
      <ul>
        <li></li>
        <li></li>
      </ul>
    </section>
  </body>
</html>

如果您将 vim 的折叠设置为缩进并尝试折叠任一节元素,则两者都将折叠到折叠中。不理想。相反,我一直在做的是折叠每个部分的内容。

我想要的是将各个部分元素折叠到它们自己的块中。

现在将 foldmenthod 设置为语法,然后使用 zfat 可以工作,但是击键次数很多。

相反,是否可以根据打开/关闭块折叠? 到目前为止,我已经找到了这个基于 XML 的区域,它也适用于 html,但我不知道如何使用它。

  syn region XMLFold start=+^<\([^/?!><]*[^/]>\)\&.*\(<\1\|[[:alnum:]]\)$+ end=+^</.*[^-?]>$+ fold transparent keepend extend

如果这可行或有更好的选择,有什么想法吗?

编辑

我目前拥有的。

autocmd FileType html setlocal foldmethod=indent
autocmd FileType html setlocal fdl=3

如果我在任一部分元素上切换折叠,它会将所有元素折叠成一个折叠

<html>
  <body>
   <section>…
  </body>
</html>

相反,它应该只为每个单独的部分或 div 元素切换折叠。

<html>
  <body>
   <section>…
   <section>…
  </body>
</html>

【问题讨论】:

  • 你能添加一个“实际”和一个“期望”样本吗?
  • 你能解释一下你的意思是“实际”和“期望”吗
  • “实际”将是您当前拥有的,而“期望”是您想要的。

标签: html vim folding


【解决方案1】:

我有点不确定你想要实现什么,但如果你设置了

autocmd FileType html setlocal foldmethod=indent
autocmd FileType html setlocal fdl=3

你应该得到以下信息:

<html>
  <body>
    <section>
      <ul>
+----  2 lines: <li></li>-------
      </ul>
    </section>
    <section>
      <ul>
+----  2 lines: <li></li>-------
      </ul>
    </section>
  </body>
</html>

如果没有,您的某些设置可能已关闭。例如

折叠级别是根据行的缩进计算的,除以 'shiftwidth'(向下舍入)。具有相同或 更高的折叠级别形成一个折叠,具有更高级别的行 形成嵌套折叠。

:h fold-indent

因此,如何计算级别取决于您的 shiftwidth。在您的情况下,您的设置应该是

set shiftwidth=2

得到上述结果。要切换标签的折叠,请使用za。对于其他选项,请阅读:h fold-commands(它很好且广泛)。另一个不错的选择是foldcolumn(尝试set foldcolumn=4)。

【讨论】:

    猜你喜欢
    • 2011-07-01
    • 2010-10-22
    • 2011-11-01
    • 1970-01-01
    • 2012-06-13
    • 2013-01-16
    • 2014-02-25
    • 2011-06-28
    • 2014-11-11
    相关资源
    最近更新 更多