Comment corriger l'indentation de ses énormes fichiers html qui étaient tous foirés?
J'ai essayé la "gg=G
commande habituelle , 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 configurer :filetype = xml
, pour voir si le faire croire qu'il s'agissait d'un fichier XML aiderait, mais cela ne l'a toujours pas fait.
html
vim
vi
indentation
mmcdole
la source
la source
Il y a plusieurs choses qui doivent toutes être en place. Juste pour les résumer tous en un seul endroit:
Définissez l'option suivante:
Ensuite, déplacez le curseur vers le haut du fichier et indentez jusqu'à la fin:
gg
=G
ou sélectionnez le texte souhaité à indenter et appuyez =pour l'indenter.
la source
home.html
. Je n'ai aucun problème pour indenter les fichiers .php. Ici, vous avez mon .vimrc: pastebin.com/FAJ0MCA9vim 7.4
les paramètres d'indentation défaut échouera pour cet exemple, commehtml
,body
etp
ne sont pas en retrait par défaut. Voyez cette réponse .smartindent
n'est pas nécessaire. De plus, il est réglé pour C et C ++, je préfère utiliser plus général à laautoindent
place.Le principal problème lors de l'utilisation de l'indentation intelligente est que si le XML (ou HTML) se trouve sur une ligne, car il peut finir par revenir d'une requête curl,
gg=G
cela ne fera pas l'affaire. Au lieu de cela, je viens de faire l'expérience d'une bonne indentation en utilisant tidy directement appelé depuis VI:Cela indique essentiellement au VI d'appeler tidy pour nettoyer un fichier XML qui n'entoure pas les lignes pour les faire tenir sur les lignes de 68 caractères par défaut. J'ai traité un gros fichier XML de 29 Mo et cela a pris 5 ou 6 secondes. Je suppose que pour un fichier HTML, la commande devrait donc être:
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 pas: HTML Tidy .la source
Comme l'explique tylerl ci-dessus, définissez les paramètres suivants:
Toutefois, notez que dans vim 7.4 les balises HTML
html
,head
,body
et d'autres sont pas 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 obtenir ces balises en retrait comme ceci:Voir "L' indentation HTML ne fonctionne pas dans Vim 7.4 compilé, des idées? " Et "Un script d'indentation html alternatif " pour plus d'informations.
la source
C'est ma solution qui fonctionne bien pour ouvrir du HTML "laid" d'une manière bien espacée:
sw
commande est due au fait que ma valeur par défaut est 4, ce qui est trop élevé pour HTML.>
).=
.>
(puisque j'aiset hlsearch
dans mon vimrc).Vous pouvez même ajouter
| wq! fileOut.html
à la fin si vous ne voulez pas du tout entrer dans Vim, mais simplement nettoyer le fichier.la source
:%s/>\s*/>\r/g
(ajouté ung
pour le remplacement global et\s*
pour supprimer les espaces de fin). J'ai également ajouté:%s/</\r</g
pour ajouter une nouvelle ligne avant le crochet ouvert. Sinon, les balises comme<td>foo</td>
seraient divisées comme<td>
etfoo</td>
.J'utilise ce script: https://github.com/maksimr/vim-jsbeautify
Dans le lien ci-dessus, vous avez toutes les informations:
:call HtmlBeautify()
Fait le travail à merveille!
la source
Avez-vous essayé d'utiliser le script d'indentation HTML sur le site Vim?
la source
/usr/share/vim/vim74/indent/html.vim
). "04 juillet 2014: Vim 7.4.356 ou version ultérieure inclut un descendant de ce script (le script officiel est maintenant maintenu par Bram et inclut des changements massifs)"Voici une solution lourde qui vous permet de mettre en retrait, ainsi que toutes les jolies impressions HTML dont vous ne voulez pas nécessairement vous soucier pendant que vous éditez.
Tout d'abord, téléchargez Tidy . Assurez-vous d'ajouter le binaire à votre chemin afin de pouvoir l'appeler depuis n'importe quel endroit.
Ensuite, créez un fichier de configuration décrivant votre saveur HTML préférée. La documentation n'est pas excellente pour Tidy, mais voici un aperçu et une liste de toutes les options . Voici mon fichier de configuration:
Enregistrez-le
tidyrc_html.txt
dans votreftplugin
dossier (sous vimfiles).Encore un fichier: ajoutez la ligne suivante à (ou créez)
html.vim
, également dansftplugin
:Pour l'utiliser, ouvrez simplement un fichier HTML et tapez
/tidy
. (C'est/
la<leader>
clé.)Voilà! Ce n'est en aucun cas une solution rapide, mais maintenant vous êtes un peu mieux équipé pour éditer ces énormes fichiers HTML en désordre.
la source
Vous pouvez intégrer automatiquement tidy et html-beautify en installant le plugin vim-autoformat . Après cela, vous pouvez exécuter le formateur installé avec une seule touche.
la source
Si l'autoformat / indentation de vim
gg=G
semble être "cassé" (comme l'indentation à gauche de chaque ligne), il est fort probable que le plugin d'indentation n'est pas activé / chargé. Cela devrait vraiment donner un message d'erreur au lieu de simplement faire une mauvaise indentation, sinon les utilisateurs pensent simplement que la fonction de mise en forme automatique / indentation est horrible, alors qu'elle est en fait plutôt bonne.Pour vérifier si le plugin d'indentation 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
:Maintenant, si vous ouvrez le fichier et exécutez
:scriptnames
, vous devriez voir.../indent/html.vim
. Ensuite, exécutezgg=G
, ce qui devrait faire le bon formatage automatique / retrait maintenant. (Bien qu'il n'ajoute pas de nouvelles lignes, donc si tout le code html est sur une seule ligne, il ne sera pas en retrait).Remarque: si vous exécutez
:filetype plugin indent on
sur la ligne de commande vim au lieu de~/.vimrc
, vous devez rouvrir le fichier:e
.De plus, vous n'avez pas à vous soucier des paramètres
autoindent
etsmartindent
, ils ne sont pas pertinents pour cela.la source