67 votes

Emacs peut-il indenter une grosse quantité de HTML pour moi?

Lors de l'édition de HTML dans emacs, existe-t-il un moyen de formater automatiquement un blob de balisage, en modifiant quelque chose comme ceci:

   <table>
  <tr>
<td>blah</td></tr></table>
 

... dans ceci:

 <table>
 <tr>
  <td>
   blah
  </td>
 </tr>
</table>
 

99voto

vava Points 11364

Vous pouvez faire sgml-pretty-print puis indent-for-tab sur la même région / mémoire tampon, à condition que vous soyez en mode html ou nxml.

sgml-pretty-print ajoute de nouvelles lignes aux emplacements appropriés et indent-for-tab ajoute une belle indentation. Ensemble, ils aboutissent à un format HTML / XML correctement formaté.

13voto

Jay Points 20373

http://www.delorie.com/gnu/docs/emacs/emacs_277.html

Après avoir sélectionné la région que vous souhaitez corriger. (Pour sélectionner la totalité du tampon, utilisez Cx h)

CMq

Réindentez toutes les lignes dans un groupe entre parenthèses (indent-sexp).

CM-\

Réindentir toutes les lignes de la région (région en retrait).

10voto

jtahlborn Points 32515

J'ai moi-même écrit une fonction pour le faire pour XML, qui fonctionne bien en mode NXML. devrait aussi bien fonctionner pour le HTML:

 (defun jta-reformat-xml ()
  "Reformats xml to make it readable (respects current selection)."
  (interactive)
  (save-excursion
    (let ((beg (point-min))
          (end (point-max)))
      (if (and mark-active transient-mark-mode)
          (progn
            (setq beg (min (point) (mark)))
            (setq end (max (point) (mark))))
        (widen))
      (setq end (copy-marker end t))
      (goto-char beg)
      (while (re-search-forward ">\\s-*<" end t)
        (replace-match ">\n<" t t))
      (goto-char beg)
      (indent-region beg end nil))))
 

8voto

nevcx Points 51

Vous pouvez faire une regexp de remplacement

  M-x replace-regexp

 \(</[^>]+>\)

 \1C-q-j
 

Indenter tout le tampon

  C-x h
 M-x indent-region
 

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