在emacs中编辑HTML时,有没有一种方法可以自动调整标记的格式,更改如下内容:
<table>
<tr>
<td>blah</td></tr></table>
...into此命令:
<table>
<tr>
<td>
blah
</td>
</tr>
</table>
发布于 2008-09-28 01:22:01
默认情况下,当您在Emacs (22或23)中访问.html
文件时,它会将您置于html-mode
中。这可能不是您想要的。你可能想要nxml-mode
,这是非常花哨的。nxml-mode
似乎只随Emacs 23一起提供,尽管您可以从nXML web site下载用于早期版本的emacs。还有一个名为nxml-mode
的Debian和Ubuntu包。您可以使用以下命令输入nxml-mode
:
M-x nxml-mode
您可以使用以下命令查看nxml模式文档:
C-h i g (nxml-mode) RET
话虽如此,您可能不得不使用诸如Tidy之类的东西来重新格式化您的xhtml示例。nxml-mode
会让你从
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<table>
<tr>
<td>blah</td></tr></table>
</body>
至
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<table>
<tr>
<td>blah</td></tr></table>
</body>
</html>
但是我没有看到一个更通用的工具来在某些xml标记上进行您想要的换行。请注意,C-j
将插入一个具有适当缩进的新行,因此您可以执行一个快速宏或修改一个defun
来处理您的表。
发布于 2011-06-06 11:47:26
您可以在相同的区域/缓冲区上执行sgml-pretty-print
,然后再执行indent-for-tab
,前提是您处于html模式或nxml模式。
sgml-pretty-print
会在适当的位置添加新行,而indent-for-tab
会添加漂亮的缩进。它们共同导致了正确格式化的html/xml。
发布于 2011-06-07 00:56:07
我自己为xml编写了一个函数,它在nxml模式下工作得很好。对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))))
https://stackoverflow.com/questions/137043
复制相似问题