Peut emacs ré-indenter un gros blob HTML pour moi?
Lors de l'édition de HTML dans emacs, il est un moyen automatiquement à-peu-près le format d'une goutte de balisage, de changer quelque chose comme ceci:
<table>
<tr>
<td>blah</td></tr></table>
...dans ce:
<table>
<tr>
<td>
blah
</td>
</tr>
</table>
- C'est beaucoup plus facile dans les plus récentes versions d'emacs. C'est un menu déroulant de la situation.
Vous devez vous connecter pour publier un commentaire.
Par défaut, lorsque vous visitez un
.html
fichier dans Emacs (22 ou 23), il va vous mettre danshtml-mode
. Ce n'est probablement pas ce que vous voulez. Vous voulez probablementnxml-mode
, qui est sérieusement fantaisie.nxml-mode
semble être la seule à venir avec Emacs 23, bien que vous pouvez le télécharger les versions antérieures d'emacs à partir de la nXML site web. Il y a aussi une Debian et Ubuntu package nomménxml-mode
. Vous pouvez entrernxml-mode
avec:Vous pouvez afficher le mode nxml documentation avec:
Tout cela étant dit, vous aurez probablement à utiliser quelque chose comme Bien rangé re-formater votre xhtml exemple.
nxml-mode
vous permettra de passer deà
mais je ne vois pas un plus générale de la facilité à faire des sauts de ligne, sur certaines balises xml que vous le souhaitez. Notez que
C-j
pour insérer une nouvelle ligne avec une bonne indentation, vous pourriez être en mesure de faire un rapide macro ou pirater undefun
qui fera de vos tables.Vous pouvez faire
sgml-pretty-print
et puisindent-for-tab
sur la même région/tampon, à condition que vous êtes en html ou en mode nxml-mode.sgml-pretty-print
ajoute de nouvelles lignes à des endroits appropriés etindent-for-tab
ajoute nice indentation. Ensemble, ils conduisent à correctement formaté en html/xml.sgml-pretty-print
a travaillé pour moi de HTML wode, sans changement de mode, merci!http://www.delorie.com/gnu/docs/emacs/emacs_277.html
Après la sélection de la région que vous souhaitez corriger. (Pour sélectionner l'ensemble du tampon, utilisez C-x h)
j'ai écrit une fonction moi-même à le faire pour le xml, qui fonctionne bien dans nxml-mode. devrait fonctionner assez bien pour le html ainsi:
Vous pouvez faire une regexp remplacer
Retrait de la totalité de la mémoire tampon
Cette question est assez vieux, mais je n'étais pas vraiment heureux avec les différentes réponses. Une façon simple de ré-indenter un fichier HTML, étant donné que vous êtes en cours d'exécution est relativement nouvelle version de emacs (je suis en cours d'exécution 24.4.1) est de:
C-x h
(note: si vous voulez voir ce qui est marqué, ajouter(setq transient-mark-mode t)
à votre.emacs
fichier)M-x indent-region
Ce qui est intéressant à propos de cette méthode est qu'elle ne nécessite pas de plug-ins (Conway suggestion), il ne nécessite pas un remplacement de regexp (nevcx la suggestion), et ne requiert modes de commutation (jfm3 de la suggestion). Jay suggestion est dans la bonne direction — en général, l'exécution de
C-M-q
tiret selon un mode de règles — par exemple,C-M-q
fonctionne, dans mon expérience, dansjs-mode
et dans plusieurs autres modes. Mais nihtml-mode
ninxml-mode
ne semblent pas mettre en œuvreC-M-q
.Bien rangé pouvez faire ce que vous voulez, mais seulement pour l'ensemble de la mémoire tampon, il semble (et le résultat est XHTML)
Dans emacs 25, dans lequel je suis actuellement en train de construire à partir de la source, en supposant que vous êtes en mode HTML, utilisation
Ctrl-x
h
pour tout sélectionner, puis appuyez sur Tab.
Vous pouvez diriger une région à xmllint (si vous en avez) à l'aide de:
Le résultat dans un nouveau tampon.
Je le fais avec XML, et ça marche, même si je crois xmllint besoin d'un certain nombre d'autres options pour travailler avec le format HTML ou d'autres non-parfait XML. nxml-mode vous diront si vous avez un bien formée document.
shell-command-on-region
remplace la région d'origine avec la commande shell de sortie. c'est à dire:C-u M-|
La façon la plus simple de le faire est par l'intermédiaire de la ligne de commande.
tidy -i -m <<file_name>>
Noter que
-m
option remplace la nouvelle réorganisation du fichier avec l'ancien. Si vous ne voulez pas, vous pouvez tapertidy -i -o <<tidied_file_name>> <<untidied_file_name>>
La
-i
est pour l'indentation. Alternativement, vous pouvez créer un.tidyrc
fichier des paramètres tels queDe cette façon, tout ce que vous avez à faire est de taper
tidy -o <<tidied_file_name>> <<untidied_file_name>>
.Pour plus que juste le type de
man tidy
sur la ligne de commande.