Question

Comment puis-je réparer l'indentation de ses énormes fichiers html qui étaient tout foirés?

J'ai essayé l'habituel < !> quot; gg = G " commande , qui est ce que j’utilise pour corriger l’indentation des fichiers de code. Cependant, cela ne semblait pas fonctionner correctement sur les fichiers HTML. Il a simplement supprimé toute la mise en forme.

J'ai également essayé de définir :filetype = xml pour savoir si le persuader de penser qu'il s'agissait d'un fichier XML aiderait, mais que cela ne s'est toujours pas produit.

Était-ce utile?

La solution

Avec filetype indent on dans mon .vimrc, Vim met assez bien en retrait les fichiers HTML.

Exemple simple avec un shiftwidth de 2:

<html>
  <body>
    <p>
    text
    </p>
  </body>
</html>

Autres conseils

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

Définissez l'option suivante:

:filetype indent on
:set filetype=html           # abbrev -  :set ft=html
:set smartindent             # abbrev -  :set si

Ensuite, déplacez le curseur en haut du fichier et indentez-le à la fin: gg =G
Ou sélectionnez le texte que vous souhaitez mettre en retrait et appuyez sur = pour le mettre en retrait.

Le problème principal avec l'indentation intelligente est que si le XML (ou HTML) est placé sur une seule ligne, car il risque de revenir d'une demande curl, gg=G ne suffira pas. Au lieu de cela, je viens de faire l'expérience d'une bonne empreinte en utilisant tidy directement appelé à partir de VI:

:!tidy -mi -xml -wrap 0 %

En gros, cela indique à VI d’appeler Tidy pour nettoyer un fichier XML qui n’enroule pas les lignes pour les adapter aux lignes par défaut de 68 caractères. J'ai traité un fichier XML volumineux de 29 Mo et cela a pris 5 ou 6 secondes. Je suppose que pour un fichier HTML, la commande devrait donc être:

:!tidy -mi -html -wrap 0 %

Comme mentionné dans les commentaires, tidy est un outil de base que vous pouvez trouver sur de nombreux systèmes Linux / MacOS de base. Voici la page du projet au cas où vous souhaiteriez l'avoir mais ne le faites pas: HTML Tidy .

J'espère que cela pourrait aider.

Comme l'explique tylerl ci-dessus, définissez les éléments suivants:

:filetype indent on
:set filetype=html
:set smartindent

Cependant!

Notez que dans vim 7.4, les balises HTML html, head, body et certaines autres sont non en retrait par défaut. Cela a du sens, car presque tout le contenu d’un fichier html relève de ces balises. Si vous le souhaitez vraiment, vous pouvez faire en sorte que ces balises soient en retrait de la manière suivante:

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

Voir ici et ici pour plus d'informations.

C’est ma solution qui fonctionne bien pour ouvrir & "; moche &"; HTML bien espacé:

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

La commande sw est parce que ma valeur par défaut est 4, ce qui est trop élevé pour HTML.

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

Réindexez ensuite l'intégralité du fichier avec =

Puis décochez la case set hlsearch (puisque j'ai | wq! fileOut.html dans mon vimrc)

Supprimez ensuite toutes les lignes vides / d'espaces (voir ici pour plus de détails, également ceci est double échappé car il est dans la coquille)

Vous pouvez même ajouter <=> à la fin si vous ne voulez pas entrer du tout dans Vim, mais simplement nettoyer le fichier.

J'utilise ce script: https://github.com/maksimr/vim-jsbeautify

Dans le lien ci-dessus, vous avez toutes les informations:

  1. Installer
  2. Configurer (copie du premier exemple)
  3. Exécuter :call HtmlBeautify()

Fait le travail magnifiquement!

Avez-vous essayé d'utiliser le script d'indentation HTML sur le site Vim?

Voici une solution très lourde qui vous indentera, ainsi que tous les jolis impressions HTML dont vous ne voulez pas nécessairement vous soucier pendant que vous modifiez.

Tout d'abord, téléchargez Tidy . Assurez-vous d’ajouter le fichier binaire à votre chemin pour pouvoir l’appeler depuis n’importe quel emplacement.

Créez ensuite un fichier de configuration décrivant votre version HTML préférée. La documentation n’est pas utile pour Tidy, mais voici un présentation et une liste de toutes les options . Voici mon fichier de configuration:

bare: yes
break-before-br: no
clean: yes
drop-proprietary-attributes: yes
fix-uri: yes
indent-spaces: 4
indent: yes
logical-emphasis: yes
markup: yes
output-xhtml: yes
quiet: yes
quote-marks: yes
replace-color: yes
tab-size: 4
uppercase-tags: no
vertical-space: yes
word-2000: yes
wrap: 0

Enregistrez-le sous tidyrc_html.txt dans votre ftplugin dossier (sous vimfiles).

Un fichier supplémentaire: ajoutez la ligne suivante à (ou créez) html.vim, également dans /tidy:

map <leader>tidy :%! tidy -config ~/vimfiles/ftplugin/tidyrc_html.txt <CR>

Pour l'utiliser, il suffit d'ouvrir un fichier HTML et de saisir /. (Ce <leader> est la <=> clé.)

Voilà! Ce n’est pas une solution rapide, loin de là, mais vous êtes maintenant un peu mieux équipé pour éditer ces énormes fichiers HTML.

Vous pouvez intégrer Tidy et html-beautify automatiquement en installant le plugin vim -autoformat . Ensuite, vous pouvez exécuter le formateur installé en une seule frappe.

  

J'ai essayé l'habituel " gg = G " commande, qui est ce que j’utilise pour corriger l’indentation des fichiers de code. Cependant, cela ne semblait pas fonctionner correctement sur les fichiers HTML. Il a simplement supprimé toute la mise en forme.

Si l'autoformat / indent de vim gg=G semble être & "cassé &"; (par exemple, chaque ligne est indentée à gauche), le plugin indent n’est probablement pas activé / chargé. Cela devrait vraiment donner un message d'erreur au lieu de faire un mauvais retrait, sinon les utilisateurs pensent simplement que la fonctionnalité autoformat / indenting est horrible, alors qu'elle est vraiment bonne.

Pour vérifier si le plug-in d'indent est activé / chargé, exécutez :scriptnames. Voir si .../indent/html.vim est dans la liste. Sinon, cela signifie que le plugin n'est pas chargé. Dans ce cas, ajoutez cette ligne à ~/.vimrc:

filetype plugin indent on

Maintenant, si vous ouvrez le fichier et exécutez :filetype plugin indent on, vous devriez voir :e. Puis exécutez autoindent, ce qui devrait maintenant faire le bon format automatique / indent correct. (Bien que cela n’ajoute pas de saut de ligne, donc si tout le code html est sur une seule ligne, il ne sera pas mis en retrait).

Remarque: si vous exécutez smartindent sur la ligne de commande vim au lieu de <=>, vous devez rouvrir le fichier <=>.

.

De plus, vous n'avez pas à vous soucier des paramètres <=> et <=>, ils ne sont pas pertinents pour cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top