Sublime Text 3 奇怪地重新缩进 html

Sublime Text 3 weirdly reindents html

假设我在 Sublime 中有这个 HTML 布局:

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<div>
<h1>
hello
</h1>
</div>
</body>
</html>

我尝试重新缩进它,结果是:

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <div>
        <h1>
            hello
        </h1>
    </div>
</body>
</html>

当我想要这个时:

<!DOCTYPE html>
<html>
    <head>
        <title></title>
    </head>
    <body>
        <div>
            <h1>
                hello
            </h1>
        </div>
    </body>
</html>

即我希望 <head><body> 显示为 <html> 的子级,而不是处于同一级别。有没有内置的方法来改变这个?

已解决。我所做的是安装 HTMLBeautify,然后设置自定义命令:

import sublime, sublime_plugin

class SaveRegime(sublime_plugin.WindowCommand):
    def run(self):
        if "html" in self.window.active_view().settings().get("syntax").lower():
            self.window.run_command("html_beautify")
        else:
            self.window.run_command("reindent")

虽然不漂亮,但很管用。

您可以编辑 ST3 用于缩进 HTML 的 indentation rules

  1. 如果尚未安装PackageResourceViewer,请安装
  2. 打开命令面板
  3. 键入 PRV: O 和 select PackageResourceViewer - Open Resource
  4. Select HTML
  5. Select Miscellaneous.tmPreferences
  6. 删除 batchDecreaseIndentPattern
  7. 中的 (?!html)
  8. 删除 batchIncreaseIndentPattern
  9. 中的 |html
  10. 保存文件