如何使用Vim折叠/展开HTML标签

有一些插件在Vim中折叠HTML标签吗?
或者有另一种方法来设置折叠或展开html标签的快捷方式?
我想折叠/展开html标签,就像我用缩进折叠一样。

我发现zfat (或同样zfit )适用于折叠HTML文档。 za将切换(打开或closures)现有的折叠。 zR打开当前文档中的所有折叠, zM有效地重新启用文档中标记的所有现有折叠。

如果您发现自己使用的是大量的折叠,那么您可以在.vimrc.为自己制作一些方便的键盘绑定.vimrc.

如果你缩进你的HTML,以下应该工作:

 set foldmethod=indent 

这个问题,我发现,有太多的折叠。 为了解决这个问题,我使用zOzc分别打开和closures嵌套的折叠。

查看help fold-indent了解更多信息:

 The folds are automatically defined by the indent of the lines. The foldlevel is computed from the indent of the line, divided by the 'shiftwidth' (rounded down). A sequence of lines with the same or higher fold level form a fold, with the lines with a higher level forming a nested fold. The nesting of folds is limited with 'foldnestmax'. Some lines are ignored and get the fold level of the line above or below it, whichever is lower. These are empty or white lines and lines starting with a character in 'foldignore'. White space is skipped before checking for characters in 'foldignore'. For C use "#" to ignore preprocessor lines. When you want to ignore lines in another way, use the 'expr' method. The indent() function can be used in 'foldexpr' to get the indent of a line. 

安装js-beautify命令(JavaScript版本)

 npm -g install js-beautify wget --no-check-certificate https://www.google.com.hk/ -O google.index.html js-beautify -f google.index.html -o google.index.bt.html 

http://www.google.com.hk orignal html:

http://www.google.com.hk orignal

js-beautify和vim fold:

js美化和vim折叠

加上由James Lai回答。 最初我的foldmethod =语法,所以zfat将无法正常工作。 解决方法是将foldemethod设置为手动

 :setlocal foldmethod=manual 

检查使用哪种foldmethod,

 :setlocal foldmethod? 

使用foldmethod语法来折叠html,这很简单。

这个答案是基于vim中的HTML语法折叠 。 作者是@Ingo Karcat。

  1. 设置你的折叠方法是以下语法:

    vim命令行:set foldmethod=syntax

    或者把设置放在~/.vim/after/ftplugin/html.vim

     setlocal foldmethod=syntax 
  2. 另外请注意,到目前为止,默认的语法脚本只折叠多行标签本身,而不是开始和结束标签之间的文本。

      So, this gets folded: <div class="foo" id="bar" > And this doesn't <div> <b>text between here</b> </div> 
  3. 要在标签之间折叠,需要通过以下最佳位置将语法脚本扩展到~/.vim/after/syntax/html.vim

    语法折叠是在所有但无效的html元素之间执行的(那些没有closures同级的元素,比如<br>

     syntax region htmlFold start="<\z(\<\(area\|base\|br\|col\|command\|embed\|hr\|img\|input\|keygen\|link\|meta\|para\|source\|track\|wbr\>\)\@![az-]\+\>\)\%(\_s*\_[^/]\?>\|\_s\_[^>]*\_[^>/]>\)" end="</\z1\_s*>" fold transparent keepend extend containedin=htmlHead,htmlH\d 

首先set foldmethod=syntax并尝试zfit折叠开始标签和zo展开标签,它在我的vim很好。