Comment plier / déplier les balises HTML avec Vim

est-ce qu'il y a un plugin pour plier les balises HTML dans Vim?

Ou il y a une autre façon de configurer un raccourci pour plier ou déplier les balises html?

Je voudrais plier / déplier les balises html comme je le fais avec le pliage d'indentation.

52
demandé sur nsbm 2011-08-22 17:33:51

6 réponses

j'ai trouvé zfat (ou, de même, zfit ) fonctionne bien pour le pliage avec des documents HTML. za bascule (ouvrir ou fermer) un pli. zR ouvre tous les plis du document actuel, zM réactive effectivement tous les plis existants marqués dans le document.

si vous utilisez beaucoup de plis, vous pourriez faire quelques reliures de clés pratiques pour vous - même dans votre .vimrc.

74
répondu James Lai 2013-06-14 07:43:32

si vous indentez votre HTML, ce qui suit devrait fonctionner:

set foldmethod=indent

Le problème avec cela, je trouve, est qu'il y a trop "de 151990920" plis. Pour contourner cela, j'utilise zO et zc pour ouvrir et fermer imbriquée plis, respectivement.

Voir help fold-indent pour plus d'informations:

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.
16
répondu ihohbeto 2013-06-29 21:20:33

ajouter à la réponse de James Lai. Initialement, ma syntaxe foldmethod=donc zfat ne fonctionnera pas. La Solution est de régler la méthode de foldemethode à la main

:setlocal foldmethod=manual

pour vérifier quelle méthode est utilisée,

:setlocal foldmethod?
2
répondu ken 2014-02-15 05:04:48

HTML pliant avec la syntaxe de foldmethod, qui est plus simple.

cette réponse est basée sur pliage de syntaxe HTML dans vim . l'auteur est @Ingo Karcat.

  1. définissez la syntaxe de votre méthode fold avec la suivante:

    vim ligne de commande :set foldmethod=syntax

    ou mettre le réglage dans ~/.vim/after/ftplugin/html.vim

    setlocal foldmethod=syntax
    
  2. Notez aussi que jusqu'à présent, le script de syntaxe par défaut ne plie qu'un multi-ligne étiquette elle-même, pas le texte entre l'étiquette d'ouverture et de fermeture.

        So, this gets folded:
    
            <div
                class="foo"
                id="bar"
            > 
    
        And this doesn't
    
            <div>
                <b>text between here</b>
            </div>
    
  3. pour être plié entre les tags, vous devez étendre le script de syntaxe, via le suivant, meilleur endroit dans ~/.vim/after/syntax/html.vim

    le pliage syntaxique est effectué entre tous les éléments html sauf les éléments nuls (ceux qui n'ont pas un frère ou une sœur de fermeture, comme <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
    
2
répondu soarinblue 2017-04-13 12:51:57

tout D'abord set foldmethod=syntax et essayez zfit pour plier l'étiquette de départ et zo pour déplier les étiquettes, cela fonctionne bien sur mon vim.

1
répondu Ryan Chou 2017-10-03 13:03:44