Sublime文本的缩进错误

时间:2016-07-07 14:25:04

标签: html sublimetext3 indentation auto-indent text-indent

我正在尝试在Sublime Text 3中使用HTML的自动缩进功能。我在html中有一些块注释,并选择了Edit> Line> Reindent工作,直到它发出块注释。

尝试重新启动此示例:

<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>

有什么想法吗?

2 个答案:

答案 0 :(得分:18)

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

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

  1. 安装Package Control(如果尚未安装)
  2. 安装PackageResourceViewer(如果尚未安装):
    • 打开命令选项板
    • 选择Package Control: Install Package
    • 选择PackageResourceViewer
  3. 打开命令选项板
  4. 输入PRV: O
  5. 选择PackageResourceViewer: Open Resource
  6. 选择Default
  7. 选择Indentation Rules - Comments.tmPreferences
  8. <true/>下的<key>preserveIndent</key>更改为<false/>
  9. 保存文件
  10. 重新注册现在可以正常使用评论。

    我还建议编辑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. 选择PackageResourceViewer: Open Resource
    4. 选择HTML
    5. 选择Miscellaneous.tmPreferences
    6. 更改

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

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

      |--&gt;
      

      (?#|--&gt;)
      

      (这评论结束评论正则表达式)

    7. 保存
    8. 但是,当ST3的下一个版本可用时,如果它被正确修复,那么最好删除你的覆盖。这样,您将继续获得这些文件的更新,否则您将无法使用已保存的版本。要做到这一点:

      1. Preferences - &gt; Browse Packages
      2. 删除HTML文件夹
      3. 进入Default文件夹并删除Indentation Rules - Comments.tmPreferences文件
      4. 如果问题没有在下一个版本中修复,您可以简单地重新创建这些更改。

答案 1 :(得分:1)

在Sublime Text 3(构建3103和3114)中尝试了您的示例,并且您是对的,缩进在找到注释块时会中断。

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

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