在emacs中编辑HTML时,有没有办法自动格式化一个标记blob,改变这样的事情:
<table>
<tr>
<td>blah</td></tr></table>
Run Code Online (Sandbox Code Playgroud)
......进入这个:
<table>
<tr>
<td>
blah
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
vav*_*ava 97
如果您处于html-mode或nxml-mode sgml-pretty-print
,则可以执行indent-for-tab
相同的区域/缓冲区.
sgml-pretty-print
将新行添加到适当的位置并indent-for-tab
添加漂亮的缩进.它们一起导致格式正确的html/xml.
jfm*_*fm3 28
默认情况下,当您访问.html
Emacs(22或23)中的文件时,它会将您带入html-mode
.这可能不是你想要的.你可能想要nxml-mode
,这是非常花哨的.nxml-mode
似乎只有Emacs 23才会出现,尽管您可以从nXML网站下载早期版本的emacs .还有一个名为Debian和Ubuntu的软件包nxml-mode
.您可以输入nxml-mode
:
M-x nxml-mode
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令查看nxml模式文档:
C-h i g (nxml-mode) RET
Run Code Online (Sandbox Code Playgroud)
总而言之,你可能不得不使用像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>
Run Code Online (Sandbox Code Playgroud)
至
<!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>
Run Code Online (Sandbox Code Playgroud)
但我没有看到一个更通用的工具,可以根据需要对某些xml标签进行换行.请注意,C-j
将插入一个带有适当缩进的新行,这样您就可以执行快速宏或修改defun
将执行表的操作.
Jay*_*Jay 13
http://www.delorie.com/gnu/docs/emacs/emacs_277.html
选择要修复的区域后.(要选择整个缓冲区,请使用Cx h)
CMQ
重新围绕一个括号内的所有行(indent-sexp).
厘米-\
重新召集该地区的所有线路(缩进区域).
jta*_*orn 10
我自己编写了一个函数来为xml做这个,它在nxml-mode中运行良好.应该也适用于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))))
Run Code Online (Sandbox Code Playgroud)
小智 8
你可以做一个替换正则表达式
M-x replace-regexp
\(</[^>]+>\)
\1C-q-j
Run Code Online (Sandbox Code Playgroud)
缩进整个缓冲区
C-x h
M-x indent-region
Run Code Online (Sandbox Code Playgroud)
这个问题很老了,但我对各种答案并不满意.一个简单的重新缩进HTML文件的方法,假设您运行的是相对较新版本的emacs(我正在运行24.4.1),那就是:
C-x h
(注意:如果您想查看标记的内容,请添加(setq transient-mark-mode t)
到您的.emacs
文件中)M-x indent-region
这个方法有什么好处,它不需要任何插件(Conway的建议),它不需要替换regexp(nevcx的建议),也不需要切换模式(jfm3的建议).Jay的建议是正确的方向 - 一般来说,执行C-M-q
将根据模式的规则进行缩进 - 例如C-M-q
,根据我的经验,在js-mode
其他几种模式中工作.但似乎既html-mode
没有nxml-mode
也没有实施C-M-q
.
归档时间: |
|
查看次数: |
28073 次 |
最近记录: |