Existe-t-il un plugin pour plier les balises HTML dans Vim?
Ou existe-t-il un autre moyen 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 par indentation.
J'ai trouvé que zfat
(ou également zfit
) fonctionnait bien pour le pliage avec des documents HTML. za
basculera (ouvrir ou fermer) un pli existant. zR
ouvre tous les plis du document actuel, zM
réactive effectivement tous les plis existants marqués dans le document.
Si vous utilisez fréquemment les plis, vous pouvez créer des combinaisons de touches pratiques dans votre .vimrc.
Si vous indenter votre code HTML, ceci devrait fonctionner:
set foldmethod=indent
Je trouve que le problème avec ceci est qu'il y a trop de plis. Pour résoudre ce problème, j'utilise zO
et zc
pour ouvrir et fermer les plis imbriqués, 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.
Pliage html avec la syntaxe foldmethod, qui est plus simple.
Cette réponse est basée sur la syntaxe HTML est pliée dans vim . l'auteur est @Ingo Karcat.
définissez votre méthode fold comme syntaxe avec les éléments suivants:
ligne de commande vim :set foldmethod=syntax
ou mettez le paramètre dans ~/.vim/after/ftplugin/html.vim
setlocal foldmethod=syntax
Notez également que jusqu'à présent, le script de syntaxe par défaut ne plie qu'une balise multi-lignes , Et non le texte situé entre les balises 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>
Pour être plié entre les balises, vous devez étendre le script de syntaxe, via , Le meilleur endroit dans ~/.vim/after/syntax/html.vim
Le repliement de la syntaxe est effectué entre tous les éléments sauf les éléments vides html (Ceux qui n'ont pas de frère proche, 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
Installer js-beautify command (version 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:
js-beautify et vim fold:
Ajoutez ensuite James Lai à la réponse . Au départ, ma méthode foldethod = afin que zfat ne fonctionne pas . La solution est de définir le foldemethod sur manuel
:setlocal foldmethod=manual
vérifier quelle méthode de pliage est utilisée,
:setlocal foldmethod?
Premièrement set foldmethod=syntax
et essayez zfit
de plier la balise de début et zo
de déplier les balises, Cela fonctionne bien sur mon vim.