如何使用Sublime Text 2重新格式化HTML代码?


1312

我有一些格式很差的HTML代码,我想重新格式化。是否有一个命令可以自动在Sublime Text 2中重新格式化HTML代码,使其看起来更好并且更易于阅读?



1
另外,如果您使用老式模式,则可以在正常模式下简单地使用gg = G。
2013年

3
您可能会浪费时间阅读整个页面,或者只是获取github.com/akalongman/sublimetext-codeformatter并重新开始工作。
shaneparsons

Answers:


2079

您不需要任何插件即可执行此操作。只需选择所有行(Ctrl A),然后从菜单中选择编辑→行→重新缩进。如果您使用扩展名包含HTML .html或的扩展名保存文件,则此方法有效.php

如果您经常这样做,则可能会发现此键映射很有用:

{ "keys": ["ctrl+shift+r"], "command": "reindent" , "args": { "single_line": false } }

如果您的文件未保存(例如,您只是将其粘贴到新窗口中),则可以language of choice在选择重新缩进选项之前通过选择菜单视图→语法→来手动设置缩进语言。


19
顺便说一下,这也适用于非HTML源代码,例如Ruby或JS
彼得,彼得

78
如果代码在一行上没有打开多个标签,而在一行上也没有关闭多个标签,反之亦然,那么这样做非常有用。
Charlie Gorichanaz 2012年

31
完善!在Mac上,您需要cmd键的超级键,例如:{“ keys”:[“ super + shift + r”],“ command”:“ reindent”,“ args”:{“ single_line”:false}}
Geert Weening

168
行重新缩进对于重新格式化任意HTML绝对不起作用。例如有多个没有换行符的html标签。来自@anneke的HtmlTidy答案更好。据我所知,无论换行符是什么,它都会完全正确地将源html重新格式化为缩进的源代码。
jpw

33
对于新手,请单击“首选项”,然后选择“键绑定-用户”,然后在方括号之间粘贴彼得的代码并保存文件。
sigmapi13

375

Sublime中有大约六种格式化HTML的方法。我已经测试了每个最受欢迎的插件(有关完整的详细信息,请参见我在博客上所做的文章),但是以下是一些最受欢迎的选项的简要概述:

重新缩进命令

优点:

  • Sublime附带,因此无需安装插件

缺点:

  • 不删除多余的空行
  • 无法处理缩小的HTML,带有多个打开标签的行
  • 没有正确格式化<script>

标签

优点:

  • 支持ST2 / ST3
  • 删除多余的空行
  • 没有二进制依赖性

缺点:

  • PHP标签阻塞
  • 无法<script>正确处理区块

HTMLTidy

优点:

  • 处理PHP标签
  • 调整格式的一些设置

缺点:

  • 需要PHP(回退到Web服务)
  • 仅ST2
  • 弃?

HTML美化

优点:

  • 支持ST2 / ST3
  • 简单且无binaray依赖
  • 支持OS X,Win和Linux

缺点:

  • 内嵌评论有些令人窒息
  • 扩展最小化/压缩的代码

HTML-CSS-JS美化

优点:

  • 支持ST2 / ST3
  • 处理HTML,CSS,JS
  • 与Sublime的菜单完美集成
  • 高度可定制
  • 每个项目的设置
  • 保存时格式化选项

缺点:

  • 需要Node.js
  • 不适用于嵌入式PHP

哪个最好?

HTML-CSS-JS Prettify是我书中的获奖者。很多很棒的功能,没什么好抱怨的。


12
在Prettify上排名第二。重新缩进不适用于我拥有的html,找不到Tag,而HtmlTidy在我调用它时没有做任何事情。
jcollum 2014年

2
刚尝试过,HTML-CSS-JS Prettify可以在我的用例中理想地工作(处理html的效果远优于内置的reindent或其他重新格式化程序包)
Mark Essel 2014年

2
尝试了所有其他方法,但是唯一有效的方法(针对HTML片段)是HTML-CSS-JS Prettify。谢谢!
zumek

1
还想提到的是,只需使用ST的内置功能即可删除所有缩进(例如,一旦标记已被编辑)-选择块并按ctrl + j。
zumek 2015年

1
这适用于非html扩展名吗?我试过PHP和其他模板,它没有工作。
森2015年

179

我唯一能找到的包是Tag

您可以使用程序包控件进行安装。https://sublime.wbond.net

安装程序包控件后。转到程序包控制(“首选项” ->“ 程序包控制”),然后键入并install单击enter。然后输入tag并点击enter

安装标签后,突出显示文本,按下快捷Ctrl+ Alt+ F


21
更好的插件是Tidy HTML
MatthewFord 2012年

1
谢谢...现在才知道软件包:D。在这里也看到了一些很棒的东西,可以用来制作精美的文字。arlando.net/blog/…–
mars-o

3
老实说,这是唯一与某些具有数百个随机换行符(错误地嵌套了标签)的HTML代码完美配合的东西。它基本上清除了我见过的最乱的HTML页面之一!
justinhartman 2013年

1
我不同意@ mars-o; 这个插件很棒。Tidy确实做得很好,并且非常成熟,但是此插件还完成了许多其他有趣的事情。感谢您的帖子。
zedd45

@JonnyLeeds确实可以,但并非总是正确。特别是对于XML,请尝试Indent XMLIndentX除其他外。
乔尔·梅隆


41

只是一般提示。我自动整理HTML的工作是安装软件包HTML_Tidy,然后将以下按键绑定添加到默认设置(我使用的默认设置)中:

{ "keys": ["enter"], "command": "html_tidy" },

每次输入都会运行HTML Tidy。这样做可能有缺点,我对Sublime还是很陌生,但似乎可以满足我的要求:)


2
我猜想这个插件可能会在大文件上变得有些密集,如果每次您按回车键都运行它,它可能会变得迟钝?
Rikki 2013年

2
我使用ENTER键绑定大约一天,然后将其删除。速度太慢,无法将光标移至v2中的屏幕顶部。
拉维·拉姆

22

尽管问题是针对HTML的,但我还想提供有关如何为Sublime Text 2自动格式化Javascript代码的信息

您可以选择所有代码(ctrl+ A)并使用应用程序内功能reindent(Edit-> Line-> Reindent),也可以使用JsFormat格式插件,Sublime Text 2以获取有关如何设置代码格式的更多自定义设置。 Sublime Text的默认选项卡/缩进设置。

https://github.com/jdc0589/JsFormat

您可以使用程序包控制(-> )轻松安装JsFormat。打开程序包控制,然后输入install,hit。然后输入并点击,完成。(软件包控制器将在的左下角显示安装状态,并显示成功和错误)PreferencesPackage Controlenterjs formatenterSublime

将以下行添加到您的键绑定(Preferences-> Key Bindings User

{ "keys": ["ctrl+alt+2"], "command": "js_format"}

我正在使用ctrl+ alt+ 2,您可以根据需要更改此快捷键。到目前为止,JsFormat是一个很好的插件,值得尝试!

希望这会帮助某人。



13

对我来说,HTML Prettify解决方案非常简单。我去了HTML Prettify页面

  1. 需要 Sublime Package Manager
  2. 按照此处的说明安装软件包管理器
  3. 输入cmd + shift + p以调出菜单
  4. 已输入 prettify
  5. HTML prettify在菜单中选择选择

繁荣。做完了 看起来很棒


如果您已经安装了PM,则该解决方案完全可以按照我的期望进行工作,除了2秒钟之外,几乎需要花2秒钟的时间。可能需要补充的是您需要安装prettify软件包。
doogle

注意:对于任何有兴趣的人,此答案中的插件都需要安装node.js。
假名称

不能正常工作;仅缩进/换行使HTML缩进一定程度的缩进,而其余部分未缩进且在同一行。
乔纳森

11

只需转到

编辑->标签->自动格式化文档上的标签


6
Sublime Text 2 Version 2.0.1, Build 2217在Mac 上看不到该菜单选项。您确定这是标准功能吗?
ostergaard 2013年

1
您必须从包管理器中安装标签。但是我有一个问题。当<b>somthing</b>逗号后跟逗号时,逗号会换行,从而在浏览器视图中的逗号和逗号之间产生一个空格。
reitermarkus

9

我创建了一个名为HTMLBeautify的程序包,该程序可以很好地重新格式化HTML。我以1997年发现的Perl脚本为基础,对它进行了更新,使其可以与所有新的有尖齿的现代标签一起使用。:)

检查一下,让我知道您的想法!

https://github.com/rareyman/HTMLBeautify


3
我安装了它,但是当我在演示文件上运行HTMLBeautify时,它什么也没做。一条消息显示文件已被美化,但文件内容没有任何反应。
2013年

我的猜测是您正在使用Windows…?在Windows上,您需要重新启动SublimeText 2才能使脚本可用。试试看,让我知道会发生什么。:)
罗斯

我做到了,脚本可用,只是没有更改文件中的任何内容。
2013年

奇怪。我假设所有其他插件/软件包都正常工作吗?我似乎无法在测试环境中重复该问题,因此我不确定该告诉您什么。:(
罗斯

除了格式化外,其他所有功能都按我预期的那样工作-也许是因为我正在运行德语版Windows?
2013年

7

我认为这是您要寻找的:

https://github.com/victorporof/Sublime-HTMLPrettify


我按照说明进行操作,但是没有用。插件给我错误。“'{'不被识别为内部或外部命令,可操作程序或批处理文件。”
拉维·拉姆

我认为特定的软件包需要安装Node,这是一项额外的工作... dandean.com/nodejs-npm-express-osx忽略NPM并表达
bgreater 2012年

@Allan在Windows上工作吗?我的计算机上安装了node.js。
Anirudha Gupta 2012年

7

我还没有发表评论的权限,因此这仅仅是与@peter 答案上方的答案相关的其他信息。

我发现,如果标头中的IE 条件注释未完全内联(例如,向左刷新),则HTML不会按预期对齐:

<!--[if lt IE 7]>
<p class='chromeframe'>Your browser is <em>unsupported</em>. <a href="http://browsehappy.com/">Upgrade to a different browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">install Google Chrome Frame</a> to experience this site.</p>
<![endif]-->
<!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]--> 

7

有一个很好的开源CodeFormatter插件,它(以及重新缩进)可以美化脏代码,即使所有代码都在一行中。


注意:这需要本地PHP安装。
假名称

我发现这是唯一的好插件。我几乎尝试了所有插件。
shaneparsons

看起来这已经设置了格式化HTML属性的设置。我看不到其他任何插件吗?还是我想念一个?
罗勒

4

我正在使用整洁的自定义构建系统来美化HTML。

我的Packages / User /目录中有HTMLTidy.sublime-build:

{
  "cmd": ["tidy", "-config", "$packages/User/tidy_config.cfg", "$file"]
}

和tidy_config.cfg文件在同一目录中:

indent: auto
tab-size: 4
show-warnings: no
write-back: yes
quiet: yes
indent-cdata: yes
tidy-mark: no
wrap: 0

然后只需选择构建系统,然后按ctrl+ bcmd+ b重新格式化文件内容即可。一个小问题是ST2不会自动重新加载文件,因此要查看结果,您必须切换到其他文件(或切换到其他应用程序)。

在Mac上,我已经使用macports安装了tidy,在Windows上,您必须自己下载它并在构建系统中指定tidy所在的工作目录:

"working_dir": "c:\\HTMLTidy\\"

或将其添加到PATH。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.