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

问题描述 投票:0回答:6

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

html vim folding
6个回答
97
投票

我发现

zfat
(或者同样地,
zfit
)非常适合折叠 HTML 文档。
za
将切换(打开或关闭)现有折叠。
zR
打开当前文档中的所有折叠,
zM
有效地重新启用文档中标记的所有现有折叠。

如果您发现自己广泛使用折叠,您可以在

.vimrc.

中为自己制作一些方便的按键绑定

27
投票

如果您缩进 HTML,则以下内容应该有效:

set foldmethod=indent

我发现这个问题是有太多折叠。为了解决这个问题,我分别使用

zO
zc
来打开和关闭嵌套折叠。

请参阅

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.

8
投票

使用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

    语法折叠在除 void 之外的所有 html 元素之间执行 (那些没有关闭兄弟姐妹的,例如

    <br>

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

5
投票

安装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 原html:

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

js-美化和vim折叠:

js-beautify and vim fold


2
投票

补充 James Lai 的回答。 最初我的foldmethod=syntax 所以 zfat 不起作用。 解决方案是将foldemethod设置为手动

:setlocal foldmethod=manual

检查正在使用哪种折叠方法,

:setlocal foldmethod?

1
投票

首先

set foldmethod=syntax
并尝试
zfit
折叠开始标签和
zo
展开标签,它在我的vim上运行良好。

© www.soinside.com 2019 - 2024. All rights reserved.