Sublime Text缩进问题

时间:2013-09-09 03:13:22

标签: jsp jstl indentation sublimetext sublimetext3

我在组合html和jsp标签时遇到了缩进问题。

重现的步骤:

  1. 文件>新文件(Ctrl + N)
  2. 查看>语法> Java> Java服务器页面(JSP)
  3. 粘贴以下代码:
  4. <ul>
       <c:if test="${a > 0}">
          <li>a</li>
       </c:if>
    </ul>
    
    1. 选择所有内容(Ctrl + A)并运行Ctrl + Shift + P&gt;缩进:Reindent Lines
    2. 结果是:
    3. <ul>
         <c:if test="${a > 0}">
            <li>a</li>
      </c:if>
      </ul>
      

      在Windows 7 x64下测试运行Build 3047。

      任何线索?

1 个答案:

答案 0 :(得分:1)

对于ST2:

打开html包并编辑Packages/HTML/Miscellaneous.tmPreferences文件。

将文本替换为下面的文本。以下正则表达式接受<c:if>格式的基本jsp标记&amp; JSP评论。这不会格式化scriplets。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>name</key>
    <string>Miscellaneous</string>
    <key>scope</key>
    <string>text.html</string>
    <key>settings</key>
    <dict>
        <key>decreaseIndentPattern</key>
        <string>(?x)
        ^\s*
        (&lt;/(?!html)
          ([A-Za-z0-9]+(:[A-Za-z0-9]+)?)\b[^&gt;]*&gt;
        |--&gt;
        |--%&gt;
        |&lt;\?(php)?\s+(else(if)?|end(if|for(each)?|while))
        |\}
        )</string>
        <key>increaseIndentPattern</key>
        <string>(?x)
        ^\s*
        &lt;(?!\?|area|base|br|col|frame|hr|html|img|input|link|meta|param|[^&gt;]*/&gt;)
          ([A-Za-z0-9]+(:[A-Za-z0-9]+)?)(?=\s|&gt;)\b[^&gt;]*&gt;(?!.*&lt;/\1&gt;)
        |&lt;!--(?!.*--&gt;)
        |&lt;%--(?!.*--%&gt;)
        |&lt;\?php.+?\b(if|else(?:if)?|for(?:each)?|while)\b.*:(?!.*end\1)
        |\{[^}"']*$
        </string>
        <key>bracketIndentNextLinePattern</key>
        <string>&lt;!DOCTYPE(?!.*&gt;)</string>
    </dict>
</dict>
</plist>

重新启动Sublime文字