emacs可以为我重新缩进HTML一大块吗?
时间:2020-03-06 14:45:31 来源:igfitidea点击:
在emacs中编辑HTML时,有一种方法可以自动对标记的blob进行漂亮的格式设置,并进行如下更改:
<table> <tr> <td>blah</td></tr></table>
...变成这样:
<table> <tr> <td> blah </td> </tr> </table>
解决方案
http://www.delorie.com/gnu/docs/emacs/emacs_277.html
选择要修复的区域后。 (要选择整个缓冲区,请使用C-x h)
C-M-q Reindent all the lines within one parenthetical grouping(indent-sexp). C-M-\ Reindent all lines in the region (indent-region).
Tidy可以做我们想做的事,但似乎只对整个缓冲区起作用(结果是XHTML)
M-x tidy-buffer
默认情况下,当我们在Emacs中访问" .html"文件(22或者23)时,它将使我们进入" html-mode"。那可能不是我们想要的。我们可能需要nxml-mode
,这是非常值得的。尽管我们可以从nXML网站上为emacs的早期版本下载它," nxml-mode"似乎仅随Emacs 23一起提供。还有一个名为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'。
我们可以执行替换正则表达式
M-x replace-regexp \(</[^>]+>\) C-q-j
缩进整个缓冲区
C-x h M-x indent-region