2016-07-07 27 views
6

Ich versuche, die automatische Einrückung in Sublime Text 3 für HTML zu verwenden. Ich habe einige Blockkommentare im HTML-Code und die Auswahl von Bearbeiten> Linie> Reindieren funktioniert solange, bis ein Blockkommentar gefunden wird.Eindruck Fehler mit Sublime Text

Versuchen Sie das Beispiel hier 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> 

und es stellt sich wie folgt aus:

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

Irgendwelche Gedanken?

+0

Funktioniert es ohne den Kommentar? –

+0

Ja, es reicht gut aus, wenn es ohne den Kommentarblock neu eingerückt wird. –

+0

kann bestätigen, das genaue Problem passiert mir mit ST3 3103 – Sebastianb

Antwort

13

ich das Problem angemeldet haben hier: https://github.com/SublimeTextIssues/Core/issues/1271

Der Grund für dieses Verhalten ist, weil Sublime Text standardmäßig eingestellt wird, um die Vertiefung der Kommentare zu bewahren. So deaktivieren Sie diese:

  1. Package Control installieren, wenn es nicht bereits installiert
  2. PackageResourceViewer installieren, wenn es nicht bereits installiert ist:
    • Öffnen Sie die Befehlspalette
    • Select Package Control: Install Package
    • Select PackageResourceViewer
  3. Öffnen Sie die Befehlspalette
  4. Typ PRV: O
  5. Select PackageResourceViewer: Open Resource
  6. Select Default
  7. Select Indentation Rules - Comments.tmPreferences
  8. Ändern Sie den <true/> unter <key>preserveIndent</key>-<false/>
  9. Speichern Sie die Datei

Reindentation funktioniert nun korrekt mit Kommentaren.


Ich würde auch Kommentare empfehlen die HTML-Einzug Regeln zu bearbeiten, zu ignorieren, so dass es auf Basis von Tags in Kommentaren nicht Einzug ändern. d.h.sonst

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

würde:

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

dies zu tun:

  1. öffnen Befehlspalette
  2. Typ PRV: O
  3. Select PackageResourceViewer: Open Resource
  4. Select HTML
  5. Wählen Miscellaneous.tmPreferences
  6. ändern

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

    zu

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

    und

    |--&gt; 
    

    zu

    (?#|--&gt;) 
    

    (dies kommentiert die Schließung Kommentar regex out)

  7. speichern es

Wenn jedoch die nächste Version von ST3 verfügbar ist, könnte es eine gute Idee sein, dann zu löschen überschreibt, falls es richtig behoben wird. Auf diese Weise erhalten Sie weiterhin Updates für diese Dateien, da Sie ansonsten die von Ihnen gespeicherten Versionen nicht verwenden können. Um dies zu tun:

  1. Preferences ->Browse Packages
  2. Löschen Sie die HTML Ordner
  3. Gehen in den Default Ordner und löschen Sie die Datei Indentation Rules - Comments.tmPreferences

Wenn das Problem nicht in den nächsten fixiert wurde Build, können Sie diese Änderungen einfach neu erstellen.

+1

Awesome. Sehr gute Antwort. Ich folgte den Schritten und alles funktionierte wie erwartet. Ich schätze den Detaillierungsgrad. Ich werde nach zukünftigen Updates Ausschau halten. –

+1

Danke Kumpel! – Ash

+0

Dieses Paket kann auch dazu beitragen, Dateien zu reparieren, die einen eingerissenen Einzug haben: https://packagecontrol.io/packages/Normalize%20Indentation – kursus

1

Haben Sie Ihr Beispiel in Sublime Text 3 (baut 3103 und 3114) versucht und Sie haben Recht, die Einrückung bricht, wenn es einen Kommentarblock findet.

Offenbar war die Reindentation-Funktionalität immer pretty weak und HTML ist nicht der einzige Kontext, wo es nicht funktioniert (BEARBEITEN: Auch in PHP bestätigt, ziemlich das gleiche Verhalten).

Ich würde submitting the issue empfehlen, wenn es nicht bereits eingereicht wird.

+0

Danke, ich werde es mir ansehen und die Ausgabe von ihm nicht schon da. –

+0

Es gibt dieses Problem https://github.com/SublimeTextIssues/Core/issues/1271 – AdamS