Come posso riformattare il codice HTML usando Sublime Text 2?


1313

Ho del codice HTML mal formattato che vorrei riformattare. Esiste un comando che riformatterà automaticamente il codice HTML in Sublime Text 2 in modo che appaia migliore e sia più facile da leggere?



1
Inoltre, se usi la modalità Vintage puoi semplicemente usare gg = G in modalità normale.
Wiktor Mociun,

3
Puoi perdere tempo a leggere l'intera pagina, oppure puoi semplicemente ottenere github.com/akalongman/sublimetext-codeformatter e tornare al lavoro.
Shaneparsons,

Risposte:


2080

Non hai bisogno di plugin per farlo. Basta selezionare tutte le linee ( Ctrl A) e quindi dal menu selezionare Modifica → Linea → Riindent. Questo funzionerà se il tuo file viene salvato con un'estensione che contiene HTML come .htmlo .php.

Se lo fai spesso, potresti trovare utile questo mapping dei tasti:

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

Se il tuo file non viene salvato (ad esempio, hai appena incollato uno snippet in una nuova finestra), puoi impostare manualmente la lingua per il rientro selezionando il menu Visualizza → Sintassi → language of choiceprima di selezionare l'opzione di reindent.


19
A proposito, questo funziona anche con codice sorgente non HTML, come ad esempio Ruby o JS
peter

78
Funziona alla grande se il codice non ha più tag che si aprono su una riga che non si chiudono su una riga o viceversa.
Charlie Gorichanaz,

31
Perfetto! Su Mac hai bisogno di super per il tasto cmd, quindi: {"keys": ["super + shift + r"], "command": "reindent", "args": {"single_line": false}}
Geert Weening,

168
line reindent NON funziona assolutamente per riformattare HTML arbitrario. come quando ci sono più tag html senza interruzioni di riga. La risposta HtmlTidy di @anneke è superiore. Per quanto ne so, indipendentemente dalle interruzioni di riga, riformatta completamente e correttamente il codice HTML di origine in una fonte ben rientrata.
jpw,

33
Per i neofiti, fai clic su "Preferenze", quindi scegli "Legatura chiave - Utente" e incolla il codice peter tra parentesi quadre e salva il file.
sigmapi13

375

Ci sono una mezza dozzina di modi per formattare HTML in Sublime. Ho testato ciascuno dei plugin più popolari (vedi il recensione che ho fatto sul mio blog per tutti i dettagli), ma ecco una rapida panoramica di alcune delle opzioni più popolari:

Comando Reindent

Professionisti:

  • Viene fornito con Sublime, quindi non è necessaria l'installazione di plug-in

Contro:

  • Non elimina le righe vuote extra
  • Impossibile gestire HTML minimizzato, righe con più tag aperti
  • Non formatta correttamente i <script>blocchi

Etichetta

Professionisti:

  • Supporta ST2 / ST3
  • Rimuove le righe vuote extra
  • Nessuna dipendenza binaria

Contro:

  • Soffocamenti sui tag PHP
  • Non gestisce <script>correttamente i blocchi

HTMLTidy

Professionisti:

  • Gestisce i tag PHP
  • Alcune impostazioni per modificare la formattazione

Contro:

  • Richiede PHP (torna al servizio Web)
  • Solo ST2
  • Abbandonato?

HTMLBeautify

Professionisti:

  • Supporta ST2 / ST3
  • Dipendenze binaray semplici e senza
  • Supporto per OS X, Win e Linux

Contro:

  • Soffoca un po 'con i commenti in linea
  • Espande il codice minimizzato / compresso

HTML-CSS-JS Prettify

Professionisti:

  • Supporta ST2 / ST3
  • Gestisce HTML, CSS, JS
  • Ottima integrazione con i menu di Sublime
  • Altamente personalizzabile
  • Impostazioni per progetto
  • Formato su opzione di salvataggio

Contro:

  • Richiede Node.js
  • Non eccezionale per PHP incorporato

Qual è il migliore?

HTML-CSS-JS Prettify è il vincitore nel mio libro. Tante funzioni eccezionali, non c'è molto di cui lamentarsi.


12
Secondo su Prettify. Il rientro non ha funzionato sull'html che avevo, non è riuscito a trovare Tag e HtmlTidy non ha fatto nulla quando l'ho chiamato.
jcollum,

2
ho appena provato e HTML-CSS-JS Prettify ha funzionato idealmente nel mio caso d'uso (gestito pulendo l'html molto meglio dei pacchetti reindent incorporati o di altri riformattatori)
Mark Essel,

2
Ho provato tutti gli altri, ma l'unico che ha funzionato (per uno snippet di HTML) è stato HTML-CSS-JS Prettify. Grazie!
Zumek,

1
Volevo anche menzionare che puoi rimuovere tutta la rientranza (una volta che il markup è stato modificato, ad esempio) semplicemente usando la funzionalità integrata di ST: seleziona il blocco e premi ctrl + j.
Zumek,

1
Funziona con estensioni non html? ho provato su php e altri modelli, non ha funzionato.
Bsienn,

179

L'unico pacchetto che sono riuscito a trovare è Tag .

Puoi installarlo usando il controllo del pacchetto. https://sublime.wbond.net

Dopo aver installato il controllo del pacchetto. Vai a controllo pacchetto ( Preferenze -> Controllo pacchetto ) quindi digita install, premi enter. Quindi digitare tage premere enter.

Dopo aver installato Tag, evidenziare il testo e premere il collegamento Ctrl+ Alt+ F.


21
un plugin migliore è Tidy HTML
MatthewFord,

1
grazie ... ora sapevo solo sui pacchetti: D. ho visto alcune cose interessanti per il testo sublime anche qui. arlando.net/blog/…
mars-o

3
Questa è onestamente l'unica cosa che ha funzionato perfettamente con alcuni codici HTML che presentavano centinaia di interruzioni di riga casuali, tag nidificati in modo errato. Fondamentalmente ha ripulito una delle pagine HTML più complesse che abbia mai visto!
justinhartman,

1
Non sono d'accordo con @ mars-o; questo plugin è fantastico. Tidy fa alcune cose davvero bene, ed è molto consolidato, ma questo plugin fa molte altre cose interessanti. Grazie per il post.
zedd45,

@JonnyLeeds Fa un po ', ma non sempre correttamente. Per XML in particolare, prova Indent XMLo IndentXtra gli altri.
Joel Mellon,

49

Consiglio questo plugin: HTML / CSS / JS Prettify , funziona davvero.

Dopo l'installazione, basta selezionare il codice e premere Ctrl+Shift+H .

Fatto!


3
Hai bisogno di Node.js per usare quel plugin. Non molto comodo per gli utenti normali.
nikoskip,

4
Rispetto all'utilità di questo plugin, possiamo ignorare il problema di installare Node.js;)
Peter Zhu

Le istruzioni per installare packagecontrol.io/packages/HTML-CSS-JS%20Prettify hanno funzionato alla grande. Grazie.
Sacky San

41

Solo un consiglio generale. Quello che ho fatto per riordinare automaticamente il mio HTML, è stato installare il pacchetto HTML_Tidy e quindi aggiungere il seguente keybinding alle impostazioni predefinite (che utilizzo):

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

questo esegue HTML Tidy con ogni invio. Potrebbero esserci degli inconvenienti, sono abbastanza nuovo per Sublime, ma sembra fare quello che voglio :)


2
Immagino che questo plugin potrebbe diventare un po 'intenso su file di grandi dimensioni, che potrebbe diventare lento se viene eseguito ogni volta che premi Invio?
Rikki,

2
Ho usato il tasto INVIO per circa un giorno, quindi l'ho rimosso. era troppo lento e continuava a portare il cursore nella parte superiore dello schermo in v2.
Ravi Ram,

22

Anche se la domanda è per HTML, vorrei anche fornire informazioni su come formattare automaticamente il codice Javascript per Sublime Text 2 ;

Puoi selezionare tutto il tuo codice ( ctrl+ A) e utilizzare la funzionalità in-app, reindent ( Edit-> Line-> Reindent) oppure puoi utilizzare il plug-in di formattazione JsFormat Sublime Text 2se desideri avere impostazioni più personalizzabili su come formattare il tuo codice in aggiunta a le impostazioni della scheda / rientro predefinite di Sublime Text.

https://github.com/jdc0589/JsFormat

Puoi facilmente installare JsFormat usando il Controllo pacchetto ( Preferences-> Package Control) Apri il controllo pacchetto quindi digita installa, premienter . Quindi digitare js formate premere enter, il gioco è fatto. (Il controller del pacchetto mostrerà lo stato dell'installazione con esito positivo ed errori nella barra in basso a sinistra diSublime )

Aggiungi la seguente riga alle tue combinazioni di tasti ( Preferences-> Key Bindings User)

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

Sto usando ctrl+ alt+ 2, puoi cambiare questo tasto di scelta rapida come preferisci. Finora, JsFormatè un buon plugin, vale la pena provarlo!

Spero che questo possa aiutare qualcuno.



13

Per me, la HTML Prettifysoluzione era estremamente semplice. Sono andato alla pagina HTML Prettify .

  1. Ho bisogno del Sublime Package Manager
  2. Seguito le istruzioni per l'installazione del gestore pacchetti qui
  3. digitato cmd + shift + p per richiamare il menu
  4. Typed prettify
  5. Scegli la HTML prettifyselezione nel menu

Boom. Fatto. Sembra fantastico


Questa soluzione ha funzionato esattamente come volevo e impiega quasi 2 secondi se hai già installato PM. Potrebbe voler aggiungere che è necessario installare il pacchetto prettify.
doogle,

Nota: per chiunque sia interessato, il plugin in questa risposta richiede l'installazione di node.js.
Nome falso

Non funziona correttamente; solo rientro / interruzione di riga dell'HTML fino a un certo livello di rientro e lasciando il resto senza rientro e sulla stessa riga.
Jonathan,

11

Vai semplicemente a

Modifica -> Tag -> Formatta automaticamente i tag sul documento


6
Non vedo quell'opzione di menu Sublime Text 2 Version 2.0.1, Build 2217su Mac. Sei sicuro che sia una funzionalità standard?
ostergaard,

1
Devi installare Tag da Gestione pacchetti. Ma ho un problema con questo. Quando <b>somthing</b>è seguito da una virgola, la virgola viene inserita in una nuova riga, risultando in uno spazio tra qualcosa e la virgola in una vista del browser.
reitermarkus,

9

Ho creato un pacchetto chiamato HTMLBeautify che fa un buon lavoro di riformattazione dell'HTML. L'ho basato su uno script Perl che ho trovato nel 1997: l'ho aggiornato per funzionare con tutti i nuovi tag moderni e smangiati. :)

Dai un'occhiata e fammi sapere cosa ne pensi!

https://github.com/rareyman/HTMLBeautify


3
L'ho installato ma quando eseguo HTMLBeautify sul file demo non fa nulla. Un messaggio Mostra che il file è abbellito, ma non succede nulla al contenuto del file.
Sam,

Suppongo che stai usando Windows ...? Su Windows, è necessario riavviare SublimeText 2 affinché lo script sia disponibile. Provalo e fammi sapere cosa succede. :)
Ross,

L'ho fatto, lo script era disponibile, semplicemente non ha cambiato nulla nel file.
Sam,

Strano. Suppongo che tutti gli altri plugin / pacchetti funzionino normalmente? Non riesco a replicare questo problema nei miei ambienti di test, quindi non sono sicuro di cosa dirti. :(
Ross,

A parte la formattazione, tutto funziona come mi aspetto - forse è perché sto eseguendo una versione tedesca di Windows?
Sam,

7

Penso che questo sia quello che stai cercando:

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


Ho seguito le istruzioni ma non ha funzionato. Il plugin mi dà errori. "'{' non è riconosciuto come comando interno o esterno, programma eseguibile o file batch."
Ravi Ram,

Credo che pacchetto specifico richiede nodo da installare, che è un impegno ulteriore ... dandean.com/nodejs-npm-express-osx disprezzo della NPM ed esprimere
bgreater

@Allan È questo lavoro su Windows. Ho node.js installato sul mio computer.
Anirudha Gupta,

7

Devo ancora avere il privilegio di commentare, quindi si tratta semplicemente di informazioni aggiuntive relative alla risposta di @ peter sopra la risposta.

Ho scoperto che l'HTML non si allineava come previsto se i commenti condizionali di IE nell'intestazione non fossero completamente in linea, ad esempio a livello di sinistra:

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

C'è un bel plug-in CodeFormatter open source , che (insieme al reindenting) può abbellire il codice sporco anche se tutto è su una sola riga.


Nota: questo richiede un'installazione PHP locale.
Nome falso

Ho trovato che questo è l' unico buon plugin .. e ho provato quasi tutti.
Shaneparsons,

Sembra che questo abbia impostazioni per formattare gli attributi HTML. Non vedo nessuno degli altri plugin farlo? O me ne manca uno?
Basil,

4

Sto usando ordinato insieme al sistema di generazione personalizzato per preimpostare HTML.

Ho HTMLTidy.sublime-build nella mia directory Packages / User /:

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

e file tidy_config.cfg nella stessa directory:

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

E basta selezionare il sistema di generazione e premere ctrl+ bo cmd+b per riformattare il contenuto del file. Un piccolo problema è che ST2 non ricarica automaticamente il file, quindi per vedere i risultati devi passare ad un altro file e viceversa (o ad un'altra applicazione e viceversa).

Su Mac ho usato macports per installare tidy, su Windows dovresti scaricarlo tu stesso e specificare la directory di lavoro nel sistema di compilazione, dove si trova tidy:

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

o aggiungilo al PERCORSO.


4

è possibile impostare il tasto di scelta rapida F12facile !!!

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

vedi i dettagli qui .


6
Risposta senza valore; questo è un duplicato della risposta accettata.
Mark Amery,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.