Jak sformatować kod HTML za pomocą Sublime Text 2?

1312

Mam trochę źle sformatowany kod HTML, który chciałbym sformatować. Czy istnieje polecenie, które automatycznie sformatuje kod HTML w Sublime Text 2, aby wyglądał lepiej i był łatwiejszy do odczytania?

Ravi Ram
źródło
4
Zobacz także stackoverflow.com/questions/9495007/…
Kristopher Johnson
1
Również jeśli używasz trybu Vintage, możesz po prostu użyć gg = G w trybie normalnym.
Wiktor Mociun,
3
Możesz marnować czas na czytanie całej strony lub po prostu uzyskać github.com/akalongman/sublimetext-codeformatter i wrócić do pracy.
shaneparsons

Odpowiedzi:

2079

Nie potrzebujesz do tego żadnych wtyczek. Wystarczy wybrać wszystkie linie ( Ctrl A), a następnie z menu wybierz Edycja → Linia → Reindent. Działa to, jeśli plik jest zapisany z rozszerzeniem zawierającym HTML, takim jak .htmllub .php.

Jeśli robisz to często, przydatne może być mapowanie klawiszy:

{ "keys": ["ctrl+shift+r"], "command": "reindent" , "args": { "single_line": false } }

Jeśli plik nie został zapisany (np. Właśnie wkleiłeś fragment kodu do nowego okna), możesz ręcznie ustawić język wcięcia, wybierając menu Widok → Składnia → language of choiceprzed wybraniem opcji reindent.

Piotr
źródło
19
Nawiasem mówiąc, działa to również w przypadku kodu źródłowego innego niż HTML, takiego jak np. Ruby lub JS
Peter
78
Działa to świetnie, jeśli kod nie ma wielu tagów otwierających się w jednym wierszu, które również nie zamykają się w jednym wierszu lub odwrotnie.
Charlie Gorichanaz,
31
Doskonały! Na Macu potrzebujesz super dla klawisza cmd, więc: {"keys": ["super + shift + r"], "command": "reindent", "args": {"single_line": false}}
Geert Weening
168
reindent linii absolutnie NIE działa w przypadku formatowania dowolnego kodu HTML. na przykład gdy istnieje wiele tagów HTML bez podziałów linii. Odpowiedź HtmlTidy od @anneke jest lepsza. O ile mi wiadomo, niezależnie od przełamań linii, całkowicie i poprawnie formatuje źródłowy html na ładnie wcięte źródło.
jpw
33
Dla początkujących kliknij „Preferencje”, a następnie wybierz „Wiązanie klawiszy - użytkownik” i wklej kod Petera między nawiasy kwadratowe i zapisz plik.
sigmapi13
375

Istnieje pół tuzina sposobów formatowania HTML w Sublime. Przetestowałem każdą z najpopularniejszych wtyczek (szczegółowe informacje na ten temat napisałem na blogu ), ale oto krótki przegląd niektórych z najpopularniejszych opcji:

Reindent Command

Plusy:

  • Wysyłany z Sublime, więc instalacja wtyczki nie jest wymagana

Cons:

  • Nie usuwa dodatkowych pustych linii
  • Nie obsługuje zminimalizowanych wierszy HTML z wieloma otwartymi tagami
  • Nie formatuje poprawnie <script>bloków

Etykietka

Plusy:

  • Obsługuje ST2 / ST3
  • Usuwa dodatkowe puste linie
  • Brak zależności binarnych

Cons:

  • Dławiki na tagach PHP
  • Nie obsługuje <script>poprawnie bloków

HTMLTidy

Plusy:

  • Obsługuje tagi PHP
  • Niektóre ustawienia poprawiania formatowania

Cons:

  • Wymaga PHP (wraca do serwisu internetowego)
  • Tylko ST2
  • Opuszczony?

HTMLBeautify

Plusy:

  • Obsługuje ST2 / ST3
  • Proste i bez zależności binaray
  • Wsparcie dla OS X, Win i Linux

Cons:

  • Dusi się trochę komentarzami
  • Rozwija zminimalizowany / skompresowany kod

HTML-CSS-JS Prettify

Plusy:

  • Obsługuje ST2 / ST3
  • Obsługuje HTML, CSS, JS
  • Świetna integracja z menu Sublime
  • Wysoce konfigurowalny
  • Ustawienia poszczególnych projektów
  • Formatuj przy opcji zapisu

Cons:

  • Wymaga Node.js
  • Nie nadaje się do osadzonego PHP

Który jest najlepszy

HTML-CSS-JS Prettify jest zwycięzcą w mojej książce. Wiele wspaniałych funkcji, na które nie można narzekać.

Josh Earl
źródło
12
2 miejsce w Prettify. Ponowne wcięcie nie działało na html, który miałem, nie mogłem znaleźć Taga, a HtmlTidy nic nie zrobił, kiedy go nazwałem.
jcollum
2
właśnie wypróbowałem i HTML-CSS-JS Prettify idealnie działał w moim przypadku użycia (lepiej wyczyściłem HTML niż wbudowane reindent lub inne pakiety reformatter)
Mark Essel
2
Wypróbowałem wszystkie pozostałe, ale jedynym, który zadziałał (dla fragmentu HTML) był HTML-CSS-JS Prettify. Dziękuję Ci!
zumek
1
Chciałem również wspomnieć, że możesz usunąć całe wcięcie (na przykład po edycji znaczników) po prostu za pomocą wbudowanej funkcji ST - wybierz blok i naciśnij ctrl + j.
zumek
1
Czy to działa z rozszerzeniami innymi niż HTML? próbowałem na php i innych szablonach, to nie działało.
Bsienn
179

Jedyny pakiet, jaki udało mi się znaleźć, to Tag .

Możesz go zainstalować za pomocą kontrolki pakietu. https://sublime.wbond.net

Po zainstalowaniu kontroli pakietu. Przejdź do kontroli pakietów ( Preferencje -> Kontrola pakietów ), a następnie wpisz install, naciśnij enter. Następnie wpisz tagi naciśnij enter.

Po zainstalowaniu Tag podświetl tekst i naciśnij skrót Ctrl+ Alt+ F.

dardub
źródło
21
lepszą wtyczką jest Tidy HTML
MatthewFord
1
dzięki ... właśnie wiedziałem o pakietach: D. widziałem też kilka fajnych rzeczy dla wysublimowanego tekstu. arlando.net/blog/…
mars-o
3
To szczerze mówiąc, jedyna rzecz, która doskonale działała z niektórymi kodami HTML, które miały setki losowych podziałów wierszy, niepoprawnie zagnieżdżone tagi. Zasadniczo wyczyścił jedną z najbardziej niechlujnych stron HTML, jakie kiedykolwiek widziałem!
justinhartman
1
Nie zgadzam się z @ mars-o; ta wtyczka jest świetna. Tidy robi kilka rzeczy naprawdę dobrze i jest bardzo dobrze znany, ale ta wtyczka robi kilka innych interesujących rzeczy. Dzięki za post.
zedd45
@JonnyLeeds To działa, ale nie zawsze poprawnie. W przypadku XML spróbuj Indent XMLlub IndentXmiędzy innymi.
Joel Mellon
49

Polecam tę wtyczkę: HTML / CSS / JS Prettify , to naprawdę działa.

Po instalacji wybierz kod i naciśnij Ctrl+Shift+H.

Gotowy!

Peter Zhu
źródło
3
Potrzebujesz Node.js do korzystania z tej wtyczki. Niezbyt wygodne dla zwykłych użytkowników.
nikoskip,
4
Porównując z przydatnością tej wtyczki, możemy zignorować problem z instalacją Node.js;)
Peter Zhu
Instrukcje instalacji packagecontrol.io/packages/HTML-CSS-JS%20Prettify działały świetnie. dzięki.
Sacky San
41

Po prostu ogólna wskazówka. Aby automatycznie uporządkować kod HTML, zainstalowałem pakiet HTML_Tidy, a następnie dodałem następujące przypisanie klawiszy do ustawień domyślnych (których używam):

{ "keys": ["enter"], "command": "html_tidy" },

to uruchamia HTML Tidy przy każdym wejściu. Mogą to mieć wady, jestem całkiem nowy w Sublime, ale wydaje się, że robię to, co chcę :)

Anneke
źródło
2
Wyobrażam sobie, że ta wtyczka może stać się nieco intensywna w przypadku dużych plików, co może stać się powolne, jeśli będzie działać przy każdym naciśnięciu klawisza Enter?
Rikki,
2
Użyłem klawisza ENTER przez około dzień, a następnie go usunąłem. było zbyt wolne i przenosiło kursor na górę ekranu w wersji 2.
Ravi Ram
22

Chociaż pytanie dotyczy HTML, chciałbym dodatkowo podać informacje o tym, jak automatycznie sformatować kod JavaScript dla Sublime Text 2 ;

Możesz wybrać cały swój kod ( ctrl+ A) i użyć funkcji w aplikacji, reindent ( Edit-> Line-> Reindent) lub możesz użyć wtyczki formatującej JsFormat, Sublime Text 2jeśli chcesz mieć więcej ustawień, które można dostosować do formatowania kodu domyślne ustawienia zakładki / wcięcia tekstu Sublime Text.

https://github.com/jdc0589/JsFormat

Możesz łatwo zainstalować JsFormat za pomocą Kontroli pakietu ( Preferences-> Package Control) Otwórz Kontrolę pakietu, a następnie wpisz install, hitenter . Następnie wpisz js formati naciśnij enter, gotowe. (Kontroler pakietu pokaże status instalacji z powodzeniem i błędami w lewym dolnym pasku Sublime)

Dodaj następujący wiersz do przypisań klawiszy ( Preferences-> Key Bindings User)

{ "keys": ["ctrl+alt+2"], "command": "js_format"}

Używam ctrl+ alt+ 2, możesz zmienić ten klawisz skrótu, co chcesz. Jak dotąd JsFormatjest to dobra wtyczka, warto ją wypróbować!

Mam nadzieję, że to komuś pomoże.

Czołg Gokhan
źródło
13

Dla mnie HTML Prettifyrozwiązanie było niezwykle proste. Poszedłem na stronę HTML Prettify .

  1. Potrzebowałem Sublime Package Manager
  2. Postępowano zgodnie z instrukcjami dotyczącymi instalowania menedżera pakietów tutaj
  3. wpisany, cmd + shift + paby wyświetlić menu
  4. Wpisany prettify
  5. Wybierz HTML prettifyopcję z menu

Bum. Gotowy. Wygląda świetnie

insaineyesay
źródło
To rozwiązanie działało dokładnie tak, jak tego chciałem i zajmuje prawie 2 sekundy, jeśli masz już zainstalowany PM. Może chcesz dodać, że musisz zainstalować pakiet wstępnego oczyszczania.
doogle
Uwaga: dla wszystkich zainteresowanych wtyczka w tej odpowiedzi wymaga zainstalowania node.js.
Fałszywe imię
Nie działa poprawnie; tylko wcięcie / podział wiersza HTML do pewnego poziomu wcięcia, a resztę pozostawiono bez wcięcia i na tej samej linii.
Jonathan
11

Po prostu idź do

Edytuj -> Tag -> Auto-formatuj tagi na dokumencie

Ricardo Martins
źródło
6
Nie widzę tej opcji menu Sublime Text 2 Version 2.0.1, Build 2217na komputerze Mac. Czy na pewno jest to standardowa funkcja?
ostergaard
1
Musisz zainstalować Tag z Menedżera pakietów. Ale mam z tym jeden problem. Po którym <b>somthing</b>następuje przecinek, przecinek jest umieszczany w nowej linii, co powoduje spację między czymś a przecinkiem w widoku przeglądarki.
reitermarkus,
9

Stworzyłem pakiet o nazwie HTMLBeautify , który porządnie formatuje HTML. Oparłem go na skrypcie Perla, który znalazłem w 1997 r. - zaktualizowałem go, aby działał ze wszystkimi nowymi wymyślnymi nowoczesnymi tagami. :)

Sprawdź to i daj mi znać, co myślisz!

https://github.com/rareyman/HTMLBeautify

Ross
źródło
3
Zainstalowałem go, ale po uruchomieniu HTMLBeautify na pliku demonstracyjnym nic nie robi. Komunikat Wyświetla, że ​​plik jest upiększony, ale nic się nie dzieje z zawartością pliku.
Sam
Domyślam się, że używasz systemu Windows…? W systemie Windows należy ponownie uruchomić SublimeText 2, aby skrypt był dostępny. Spróbuj i daj mi znać, co się stanie. :)
Ross
Zrobiłem, skrypt był dostępny, po prostu nic nie zmienił w pliku.
Sam
Dziwne. Zakładam, że wszystkie inne wtyczki / pakiety działają normalnie? Nie mogę odtworzyć tego problemu w moich środowiskach testowych - więc nie jestem pewien, co powiedzieć. :(
Ross
Oprócz formatowania wszystko działa tak, jakbym tego oczekiwał - może dlatego, że korzystam z niemieckiej wersji systemu Windows?
Sam
7

Myślę, że tego właśnie szukasz:

https://github.com/victorporof/Sublime-HTMLPrettify

Allen Bargi
źródło
Postępowałem zgodnie z instrukcjami, ale to nie działało. Wtyczka daje mi błędy. „„ {”nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy.”
Ravi Ram
Uważam, że określony pakiet wymaga zainstalowania Węzła, co jest dodatkowym przedsięwzięciem ... dandean.com/nodejs-npm-express-osx zignoruj ​​NPM i ekspresowe
bgreater
@Allan Czy to działa w systemie Windows. Mam plik node.js zainstalowany na moim komputerze.
Anirudha Gupta
7

Jestem jeszcze mieć przywilej aby skomentować więc jest to po prostu dodatkowe informacje związane @ Piotra odpowiedź powyższej odpowiedzi.

Odkryłem, że HTML nie jest wyrównany zgodnie z oczekiwaniami, jeśli komentarze warunkowe IE w nagłówku nie są całkowicie zgodne, np. Przesunięcie w lewo:

<!--[if lt IE 7]>
<p class='chromeframe'>Your browser is <em>unsupported</em>. <a href="http://browsehappy.com/">Upgrade to a different browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">install Google Chrome Frame</a> to experience this site.</p>
<![endif]-->
<!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]--> 
newtriks
źródło
7

Jest ładna wtyczka CodeFormatter o otwartym kodzie źródłowym , która (wraz z reindentowaniem) może upiększyć brudny kod, nawet jeśli wszystko jest w jednej linii.

side2k
źródło
Uwaga: Wymaga to lokalnej instalacji PHP.
Fałszywe imię
Odkryłem, że jest to jedyna dobra wtyczka ... i wypróbowałem prawie wszystkie z nich.
shaneparsons
Wygląda na to, że ten ma ustawienia formatowania atrybutów HTML. Nie widzę w tym żadnej innej wtyczki? A może brakuje mi jednego?
Basil
4

Korzystam z tidy wraz z niestandardowym systemem kompilacji, aby upiększać HTML.

Mam HTMLTidy.sublime-build w moim katalogu Packages / User /:

{
  "cmd": ["tidy", "-config", "$packages/User/tidy_config.cfg", "$file"]
}

i plik tidy_config.cfg w tym samym katalogu:

indent: auto
tab-size: 4
show-warnings: no
write-back: yes
quiet: yes
indent-cdata: yes
tidy-mark: no
wrap: 0

I po prostu wybierz system kompilacji i naciśnij ctrl+ blub cmd+, baby ponownie sformatować zawartość pliku. Jednym drobnym problemem jest to, że ST2 nie automatycznie ponownie ładuje pliku, więc aby zobaczyć wyniki, musisz przełączyć się na inny plik i cofnąć (lub inną aplikację i cofnąć).

Na Macu użyłem Macports do zainstalowania Tidy, w Windows musisz go pobrać sam i określić katalog roboczy w systemie kompilacji, w którym znajduje się Tidy:

"working_dir": "c:\\HTMLTidy\\"

lub dodaj go do ŚCIEŻKI.

rchl
źródło
4

możesz ustawić klawisz skrótu F12łatwo !!!

{ "keys": ["f12"], "command": "reindent" , "args": { "single_line": false } }

zobacz szczegóły tutaj .

Sumeta Pongpanna
źródło
6
Bezwartościowa odpowiedź; jest to kopia zaakceptowanej odpowiedzi.
Mark Amery