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?



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.


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


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.


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!


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ę :)


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.



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


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


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


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


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

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.


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.


4

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

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

zobacz szczegóły tutaj .


6
Bezwartościowa odpowiedź; jest to kopia zaakceptowanej odpowiedzi.
Mark Amery
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.