web-dev-qa-db-de.com

Wie man HTML-Tags mit Vim ein- und ausklappt

Gibt es ein Plugin zum Falten von HTML-Tags in Vim? 
Oder gibt es eine andere Möglichkeit, um eine Verknüpfung zum Falten oder Entfalten von HTML-Tags einzurichten? 
Ich möchte HTML-Tags genauso wie die Einrückungsfaltung einfalten/entfalten.

54
nsbm

Ich habe festgestellt, dass zfat (oder zfit) auch gut zum Falten von HTML-Dokumenten geeignet ist. za schaltet eine bestehende Falte um (Öffnen oder Schließen). zR öffnet alle Falze im aktuellen Dokument, zM aktiviert effektiv alle vorhandenen Falten, die im Dokument markiert sind.

Wenn Sie Falten häufig verwenden, können Sie in Ihrem .vimrc. ein paar nützliche Tastenkombinationen für sich selbst erstellen.

74
James Lai

Wenn Sie Ihren HTML-Code einrücken, sollte Folgendes funktionieren:

set foldmethod=indent

Das Problem dabei finde ich, dass es zu viele Falten gibt. Um dies zu umgehen, verwende ich zO und zc, um verschachtelte Falten zu öffnen bzw. zu schließen.

Siehe help fold-indent für weitere Informationen:

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.
18
ihohbeto

Das Falten von HTML mit der Syntax von foldmethod ist einfacher.

Diese Antwort basiert auf der HTML-Syntaxfaltung in vim . Autor ist @Ingo Karcat.

  1. stellen Sie Ihre Fold-Methode mit folgendem Befehl auf Syntax ein:

    vim Befehlszeile :set foldmethod=syntax

    oder setze die Einstellung in ~/.vim/after/ftplugin/html.vim

    setlocal foldmethod=syntax
    
  2. Beachten Sie auch, dass das Standardsyntax-Skript nur ein mehrzeiliges Tag selbst faltet, nicht den Text zwischen dem öffnenden und dem schließenden Tag.

        So, this gets folded:
    
            <div
                class="foo"
                id="bar"
            > 
    
        And this doesn't
    
            <div>
                <b>text between here</b>
            </div>
    
  3. Um zwischen Tags gefaltet zu werden, müssen Sie das Syntaxskript über Erweitern, und zwar am besten in ~/.vim/after/syntax/html.vim.

    Die Syntaxfaltung wird zwischen allen außer void-HTML-Elementen ausgeführt. __ (diejenigen, die kein schließendes Geschwister haben, wie <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
    
4
soarinblue

Installiere js-beautify command (JavaScript-Version)

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-verschönerung und vim fold:

js-beautify and vim fold

3
kainan

Addieren Sie zur Antwort von James Lai . Anfangs meine foldmethod = -Syntax, so dass zfat nicht funktioniert ..__

:setlocal foldmethod=manual

welche Faltmethode im Einsatz ist,

:setlocal foldmethod?
2
ken

Zuerst set foldmethod=syntax und versuchen Sie zfit, um das Starttag und zo zu falten, um die Tags zu entfalten.

1
Ryan Chou