Vim如何折叠HTML标签

4

我看到一些帖子说我应该使用zfat来折叠HTML标签。所以我试了一下,但没有得到我预期的结果。例如,我在我的文档中有这个标签:

<div id="begin">
   <p>hello world</p>
      </div>

我在vim中将光标移到第一个<div id="begin">的行。 然后我按下Escape键以确保我处于命令模式。 然后我按下键z, f, at。 但是没有任何反应。 我甚至尝试了输入z, f, a{,这通常会折叠PHP代码块,但它对html没有影响。
有人能告诉我折叠html div标签的确切步骤吗?
谢谢
1个回答

14

zf确实是创建手动折叠的命令。为使其工作,您需要有:

:setlocal foldmethod=manual

否则会有一个 E350at 是一个 文本对象,用于表示a标签。 您可以将其应用于视觉模式以检查它包含的内容:vat

请注意,手动折叠很繁琐;我建议使用内置的HTML语法插件提供的语法折叠。只需放置

:setlocal foldmethod=syntax
~/.vim/after/ftplugin/html.vim中启用它。 此外,请注意到目前为止(截至 Vim 7.4.1830),默认的 HTML 语法脚本只折叠多行标签本身,而不是开放和关闭标记之间的文本。要实现这一点,您需要一个语法扩展,请参见此处

3
赞成使用“vat”来查看哪些内容会受到影响的建议。 - benjifisher
4
奇怪,我的 Vim 是最新版本 7.4,但似乎没有内置的 HTML 语法插件?即使将 foldmethod 设置为 syntax,在 HTML 文件中也没有折叠支持。 - zanona
我的Windows机器上没有这个文件。使用gvim。有什么帮助吗? - Thomas Sebastian
1
@ThomasSebastian:_after_目录中的脚本是为您的自定义而设计的。它不存在是很正常的。只需创建它即可 :-)(但请注意,在Windows上,~/.vim通常是C:\Users\yourname\vimfiles。) - Ingo Karkat
@Ingo Karkat 谢谢。这很有帮助。 - Thomas Sebastian
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接