【问题标题】:How do I reformat HTML code using Sublime Text 2?如何使用 Sublime Text 2 重新格式化 HTML 代码?
【发布时间】:2012-02-09 00:25:48
【问题描述】:

我想要重新格式化一些格式不正确的 HTML 代码。有没有一个命令可以自动重新格式化 Sublime Text 2 中的 HTML 代码,让它看起来更好,更容易阅读?

【问题讨论】:

标签: html sublimetext2 sublimetext indentation reformat


【解决方案1】:

我正在使用tidy 和自定义构建系统来美化 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。

【讨论】:

    【解决方案2】:

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

    1. 需要Sublime Package Manager
    2. 按照说明安装包管理器here
    3. 键入 CMD+SHIFT+P 调出菜单
    4. 输入prettify
    5. 在菜单中选择HTML prettify 选项

    轰隆隆。完毕。看起来不错

    【讨论】:

    • 这个解决方案完全符合我的要求,如果你已经安装了 PM,只需要 2 秒。可能要补充一点,您需要安装美化包。
    • 注意:对于任何感兴趣的人,此答案中的插件需要安装 node.js。
    • 不能正常工作;仅将 HTML 缩进/换行到一定程度的缩进,其余部分不缩进并在同一行上。
    【解决方案3】:

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

    您可以选择所有代码(CTRL+A) 并使用应用内功能 reindent(Edit -> Line -> @987654324 @) 或者您可以使用 Sublime Text 2 的 JsFormat 格式化插件,如果您希望在 Sublime Text 的默认制表符/缩进设置之外对如何格式化您的代码进行更多自定义设置。

    https://github.com/jdc0589/JsFormat

    您可以使用 Package Control (Preferences -> Package Control) 轻松安装 JsFormat 打开 package control 然后键入 install,点击 ENTER kbd>。然后输入js format 并点击ENTER,你就完成了。 (包控制器会在Sublime的左下栏显示安装成功和错误的状态)

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

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

    我用的是CTRL+ALT+2,你可以随意改变这个快捷键。到目前为止,JsFormat 是一个不错的插件,值得一试!

    希望这会对某人有所帮助。

    【讨论】:

      【解决方案4】:

      我推荐这个插件:HTML/CSS/JS Prettify,它真的很好用。

      安装完成后,只需选择代码并按CTRL+SHIFT+H

      完成!

      【讨论】:

      • 您需要 Node.js 才能使用该插件。对于普通用户来说不是很舒服。
      • 对比这个插件的用处,我们可以忽略安装Node.js的麻烦;)
      • 安装说明packagecontrol.io/packages/HTML-CSS-JS%20Prettify 效果很好。谢谢。
      【解决方案5】:

      您不需要任何插件来执行此操作。 只需选择所有行 (CTRL+A),然后从菜单中选择 Edit → Line → Reindent。 如果您的文件使用包含 HTML 的扩展名(如 .html.php)保存,这将起作用。

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

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

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

      【讨论】:

      • 顺便说一句,这也适用于非 HTML 源代码,例如 Ruby 或 JS
      • 如果代码没有在一行上打开多个标签,也没有在一行上关闭,反之亦然。
      • 完美!在 Mac 上,您需要 super 作为 cmd 键,例如: { "keys": ["super+shift+r"], "command": "reindent" , "args": {"single_line": false}}跨度>
      • line reindent 绝对不适用于重新格式化任意 HTML。例如当有多个没有换行符的html标签时。 @anneke 的 HtmlTidy 答案非常出色。据我所知,无论换行如何,它都会将源 html 完全正确地重新格式化为缩进良好的源。
      • 对于新手,点击“Preferences”,然后选择“Key Binding - User”,在方括号之间粘贴peter的代码并保存文件。
      【解决方案6】:

      HTML-CSS-JS Prettify - 最好的。

      1. 安装包控制
      2. ⌘ + left shift + p(或 ctrl + alt + left shift + p)-> 包控制:安装包
      3. 输入 HTML-CSS-JS 美化
      4. 安装节点
      5. 重启 Sublime Text

      享受吧。

      【讨论】:

        【解决方案7】:

        我能找到的唯一包是Tag

        您可以使用包控制安装它。 https://sublime.wbond.net

        安装包控制后。转到包控制(Preferences -> Package Control)然后输入install,点击enter。然后输入tag 并点击enter

        安装 Tag 后,突出显示文本并按下快捷键 Ctrl+Alt+F

        【讨论】:

        • Tidy HTML 是一个更好的插件
        • 谢谢...现在才知道包:D。在这里也看到了一些关于崇高文本的很酷的东西。 arlando.net/blog/…
        • 老实说,这是唯一可以完美处理一些具有数百个随机换行符、错误嵌套的标签的 HTML 代码的方法。它基本上清理了我见过的最混乱的 HTML 页面之一!
        • 我不同意@mars-o;这个插件很棒。 Tidy 做了一些非常好的事情,并且非常成熟,但是这个插件还做了很多其他有趣的事情。感谢您的帖子。
        • @JonnyLeeds 确实如此,但并不总是正确的。对于 XML,请尝试使用 Indent XMLIndentX 等。
        【解决方案8】:

        你可以设置快捷键F12简单!!!

        { "keys": ["f12"], "command": "reindent" , "args": { "single_line": false } }
        

        查看详情here

        【讨论】:

        • 毫无价值的答案;这是已接受答案的副本。
        【解决方案9】:

        在 Sublime 中有六种左右格式化 HTML 的方法。我已经测试了每个最受欢迎的插件(请参阅writeup I did on my blog 了解全部详细信息),但这里是一些最受欢迎的选项的快速概述:

        重新缩进命令

        优点:

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

        缺点:

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

        Tag

        优点:

        • 支持 ST2/ST3
        • 删除多余的空行
        • 无二进制依赖关系

        缺点:

        • PHP 标记阻塞
        • 无法正确处理 <script>

        HTMLTidy

        优点:

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

        缺点:

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

        HTMLBeautify

        优点:

        • 支持 ST2/ST3
        • 简单且无二进制依赖关系
        • 支持 OS X、Win 和 Linux

        缺点:

        • 内联 cmets 有点窒息
        • 是否扩展最小化/压缩代码

        HTML-CSS-JS Prettify

        优点:

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

        缺点:

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

        哪个最好?

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

        【讨论】:

        • 第二次在 Prettify 上。重新缩进对我拥有的 html 不起作用,找不到 Tag 并且 HtmlTidy 在我调用它时没有做任何事情。
        • 刚刚尝试过,HTML-CSS-JS Prettify 在我的用例中工作得非常理想(处理清理 html 的效果比内置的 reindent 或其他重新格式化程序包要好得多)
        • 尝试了所有其他方法,但唯一有效的方法(对于 HTML 的 sn-p)是 HTML-CSS-JS Prettify。谢谢!
        • 还想提一下,您只需使用 ST 的内置功能即可删除所有缩进(例如,一旦编辑了标记) - 选择块并按 ctrl+j。
        • 这是否适用于非 html 扩展?我尝试了 php 和其他模板,它没有工作。
        【解决方案10】:

        有一个不错的开源CodeFormatter plugin,它(连同重新缩进)可以美化脏代码,即使所有代码都在单行中。

        【讨论】:

        • 注意:这需要本地 PHP 安装。
        • 我发现这是唯一的好插件..我几乎都试过了。
        • 看起来这个有设置格式化 HTML 属性。我没有看到任何其他插件这样做?还是我错过了一个?
        【解决方案11】:

        我创建了一个名为 HTMLBeautify 的包,它在重新格式化 HTML 方面做得不错。我基于我在 1997 年找到的一个 Perl 脚本来制作它——我更新了它以使用所有新奇的现代标签。 :)

        看看,让我知道你的想法!

        https://github.com/rareyman/HTMLBeautify

        【讨论】:

        • 我安装了它,但是当我在演示文件上运行 HTMLBeautify 时,它什么也没做。消息显示文件已美化,但文件内容没有任何反应。
        • 我猜你使用的是 Windows...?在 Windows 上,您需要重新启动 SublimeText 2 才能使用该脚本。试试看,让我知道会发生什么。 :)
        • 我做了,脚本可用,只是没有更改文件中的任何内容。
        • 奇怪。我假设所有其他插件/包都正常工作?我似乎无法在我的测试环境中复制这个问题——所以我不确定要告诉你什么。 :(
        • 除了格式化之外,一切都按我的预期工作——也许是因为我运行的是德语版的 Windows?
        【解决方案12】:

        我还没有评论的特权,所以这只是与@peter 的answer 以上答案相关的附加信息。

        我发现如果标题中的 IE conditional comments 没有完全内联,例如 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]--> 
        

        【讨论】:

          【解决方案13】:

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

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

          这会在每次输入时运行 HTML Tidy。这可能有缺点,我自己对 Sublime 还很陌生,但它似乎可以满足我的要求 :)

          【讨论】:

          • 我想这个插件可能会在大文件上变得有点密集,如果每次你按回车运行它可能会变得迟缓?
          • 我使用 ENTER 键绑定大约一天,然后将其删除。它太慢了,并且在 v2 中一直将光标带到屏幕顶部。
          【解决方案14】:

          直接去

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

          【讨论】:

          • 我在 Mac 上的 Sublime Text 2 Version 2.0.1, Build 2217 中看不到该菜单选项。您确定这是标准功能吗?
          • 您必须从包管理器安装标签。但我有一个问题。当&lt;b&gt;somthing&lt;/b&gt; 后跟逗号时,逗号将换行,从而在浏览器视图中的某物和逗号之间产生一个空格。
          【解决方案15】:

          有一个名为 SublimeHtmlTidy 的插件非常好用

          https://github.com/welovewordpress/SublimeHtmlTidy

          【讨论】:

            【解决方案16】:

            【讨论】:

            • 我按照说明进行操作,但没有成功。该插件给了我错误。 "'{' 不是内部或外部命令、可运行程序或批处理文件。"
            • 我认为特定的包需要安装 Node,这是一项额外的工作......dandean.com/nodejs-npm-express-osx 忽略 NPM 并表达
            • @Allan 这是在 Windows 上工作的吗?我的电脑上安装了 node.js。
            猜你喜欢
            • 2012-04-18
            • 1970-01-01
            • 1970-01-01
            • 2014-02-16
            • 2023-04-10
            • 2016-12-11
            • 2014-01-05
            • 2021-12-23
            相关资源
            最近更新 更多