Sublime Text 的缩进错误

Indentation Error with Sublime Text

我正在尝试使用 Sublime Text 3 中的自动缩进功能 HTML。我在 html 中得到了一些块注释,然后选择“编辑”>“行”>“重新缩进”直到遇到块注释。

尝试在此处重新缩进示例:

<html>
<head>
<title>Testing Indent</title>
</head>
<body>
<table>
<tr>
<td>
Cell 1
</td>
</tr>
<tr>
Cell 2
<!--Block Comment Here
And a Little More Here
-->
</tr>
</table>
</body>
</html>

结果是这样的:

<html>
<head>
    <title>Testing Indent</title>
</head>
<body>
    <table>
        <tr>
            <td>
                Cell 1
            </td>
        </tr>
        <tr>
            <td>
                Cell 2
<!--Block Comment Here
And a Little More Here
-->
</td>
</tr>
</table>
</body>
</html>

有什么想法吗?

在 Sublime Text 3(内部版本 3103 和 3114)中尝试了您的示例,您是对的,当它找到注释块时缩进会中断。

显然,重新缩进功能始终是 pretty weak 并且 HTML 不是唯一不起作用的上下文(编辑:也在 PHP 中确认,几乎相同行为)。

如果尚未提交,我建议 submitting the issue

我已在此处记录问题:https://github.com/SublimeTextIssues/Core/issues/1271

此行为的原因是因为默认情况下,Sublime Text 设置为保留注释的缩进。要禁用此功能:

  1. 如果尚未安装Package Control,请安装
  2. 安装 PackageResourceViewer 如果尚未安装:
    • 打开命令面板
    • Select Package Control: Install Package
    • Select PackageResourceViewer
  3. 打开命令面板
  4. 类型PRV: O
  5. Select PackageResourceViewer: Open Resource
  6. SelectDefault
  7. SelectIndentation Rules - Comments.tmPreferences
  8. <key>preserveIndent</key>下的<true/>改为<false/>
  9. 保存文件

重新缩进现在可以正确处理注释。


我还建议编辑 HTML 缩进规则以忽略评论,这样它就不会根据评论中的标签更改缩进。即否则

<html>
<head>
<title>Testing Indent</title>
</head>
<body>
<table>
<tr>
<td>
Cell 1
</td>
</tr>
<tr>
Cell 2
<!--
Block Comment Here
<td>
And a Little More Here
</td>
-->
</tr>
</table>
</body>
</html>

会变成:

<html>
<head>
    <title>Testing Indent</title>
</head>
<body>
    <table>
        <tr>
            <td>
                Cell 1
            </td>
        </tr>
        <tr>
            Cell 2
            <!--
            Block Comment Here
            <td>
                And a Little More Here
            </td>
        -->
    </tr>
</table>
</body>
</html>

为此:

  1. 打开命令面板
  2. 类型PRV: O
  3. Select PackageResourceViewer: Open Resource
  4. Select HTML
  5. Select Miscellaneous.tmPreferences
  6. 改变

    <key>scope</key>
    <string>text.html</string>
    

    <key>scope</key>
    <string>text.html - comment</string>
    

    |--&gt;
    

    (?#|--&gt;)
    

    (这注释掉结束注释正则表达式)

  7. 保存

但是,当下一个版本的 ST3 可用时,最好删除您的覆盖,以防它被正确修复。这样,您将继续获取这些文件的更新,否则您将停留在已保存的版本上。为此:

  1. Preferences -> Browse Packages
  2. 删除 HTML 文件夹
  3. 进入 Default 文件夹并删除 Indentation Rules - Comments.tmPreferences 文件

如果问题在下一个版本中没有得到解决,您可以简单地重新创建这些更改。