146 votes

Comment nettoyer un fichier HTML ' indentation s VI ?

L'autre jour, mon ami m'a demandé comment fixer le retrait de son énorme fichiers html qui a tout foiré.

J'ai essayé de l'habituel "gg=G" de commande, qui est ce que j'utilise pour fixer l'indentation de code fichiers. Cependant, il ne semble pas de travailler sur des fichiers HTML. Il suffit de retirer la mise en forme.

J'ai aussi essayé de réglage :filetype = xml, pour voir si tromper en pensant que c'était un fichier XML serait utile, mais elle n'a toujours pas le faire.

Je suis sûr que certains VIM ninja sait comment faire cela.

207voto

tylerl Points 14541

Il y a plusieurs choses que tous doivent être en place. Juste pour les résumer en un seul endroit :

Configurez l’option suivante :

Puis déplacez le curseur vers le haut de la file et le tiret à la fin : ````
Ou sélectionnez le texte souhaité de tiret et appuyez sur = pour mettre en retrait il.

97voto

marcog Points 39356

Avec « TypeFichier retrait sur » à l’intérieur de .vimrc, vim indente fichiers html tout à fait bien.

Exemple simple avec un shiftwidth de 2 :

76voto

oscaroscar Points 101

Le principal problème à l'aide de la puce de l'indentation, c'est que si le XML (ou HTML) se trouve sur une ligne qu'il ne se retrouve en revenant d'une demande curl alors gg=G ne suffit pas. Au lieu de cela je viens de vivre une bonne indentation à l'aide de ranger appelées directement à partir de VI:

:!tidy -mi -xml -wrap 0 %

Cela indiquera VI appeler tidy pour le nettoyage d'un fichier XML de ne pas enrouler les lignes afin de les faire correspondre à la valeur par défaut 68 caractères, lignes. J'ai traité un grand 29MB fichier XML et il a fallu 5 ou 6 secondes. Je suppose que pour un fichier HTML la commande doit donc être:

:!tidy -mi -html -wrap 0 %

Espérons que cela pourrait les aider.

49voto

Cory Klein Points 5117

Notez que dans vim 7.4 les balises html html, head, body, et certains autres ne sont pas en retrait par défaut. Cela fait sens, comme presque tout le contenu dans un fichier html relève de ces balises. Si vous le voulez vraiment, vous pouvez obtenir ces balises être en retrait de la sorte:

:let g:html_indent_inctags = "html,body,head,tbody" 

Voir ici et ici pour plus d'informations.

12voto

adam_0 Points 940

C'est ma solution qui fonctionne très bien pour l'ouverture de "laid" HTML dans un bien espacées façon:

vim fileIn.html -c "set sw=2 | %s/>/>\r/ | execute 'normal gg=G' | set nohlsearch | g/^\\s*\$/d"

L' sw commande est parce que mon défaut est de 4, ce qui est trop élevé pour HTML.

La partie suivante ajoute un saut de ligne (Vim pense que c'est un retour chariot, soupir) après chaque élément (>)

Puis re-retrait de la totalité du fichier avec l' =

Puis unhighlight > (depuis que j'ai set hlsearch dans mon vimrc)

Supprimer tous les vide / blanc, seules les lignes (voir ici pour plus d', aussi c'est à double échappé parce que c'est dans la coque)

Vous pouvez même ajouter des | wq! fileOut.html à la fin, si vous ne voulez pas entrer dans Vim, mais juste de nettoyer le fichier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X