Sublime文本的缩进错误

Mik*_*rcy 7 html indentation auto-indent text-indent sublimetext3

我正在尝试在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>
Run Code Online (Sandbox Code Playgroud)

它结果是这样的:

<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>
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

Kei*_*all 19

我在这里记录了这个问题: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. 保存文件

Reindentation现在可以正常使用评论.


我还建议编辑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>
Run Code Online (Sandbox Code Playgroud)

会成为:

<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>
Run Code Online (Sandbox Code Playgroud)

去做这个:

  1. 打开命令调色板
  2. 类型 PRV: O
  3. 选择 PackageResourceViewer: Open Resource
  4. 选择 HTML
  5. 选择 Miscellaneous.tmPreferences
  6. 更改

    <key>scope</key>
    <string>text.html</string>
    
    Run Code Online (Sandbox Code Playgroud)

    <key>scope</key>
    <string>text.html - comment</string>
    
    Run Code Online (Sandbox Code Playgroud)

    |--&gt;
    
    Run Code Online (Sandbox Code Playgroud)

    (?#|--&gt;)
    
    Run Code Online (Sandbox Code Playgroud)

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

  7. 保存

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

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

如果在下一个版本中没有修复问题,您只需重新创建这些更改即可.