Bagaimana cara memformat ulang kode HTML menggunakan Sublime Text 2?

1313

Saya memiliki beberapa kode HTML dengan format yang buruk yang ingin saya format ulang. Apakah ada perintah yang secara otomatis akan memformat ulang kode HTML di Sublime Text 2 sehingga terlihat lebih baik dan lebih mudah dibaca?

Ravi Ram
sumber
4
Lihat juga stackoverflow.com/questions/9495007/...
Kristopher Johnson
1
Juga jika Anda menggunakan mode Vintage, Anda cukup menggunakan gg = G dalam mode normal.
Wiktor Mociun
3
Anda dapat membuang waktu membaca seluruh halaman ini, atau Anda bisa mendapatkan github.com/akalongman/sublimetext-codeformatter dan kembali bekerja.
shaneparsons

Jawaban:

2080

Anda tidak perlu plugin untuk melakukan ini. Cukup pilih semua baris ( Ctrl A) dan kemudian dari menu pilih Edit → Line → Reindent. Ini akan berfungsi jika file Anda disimpan dengan ekstensi yang berisi HTML like .htmlatau .php.

Jika Anda sering melakukan ini, Anda mungkin menemukan pemetaan kunci ini berguna:

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

Jika file Anda tidak disimpan (misalnya Anda baru saja menempelkan potongan ke jendela baru), Anda dapat secara manual mengatur bahasa untuk lekukan dengan memilih menu View → Syntax → language of choicesebelum memilih opsi reindent.

Peter
sumber
19
Omong-omong, ini juga berfungsi untuk kode sumber bukan HTML, seperti misalnya Ruby atau JS
peter
78
Ini berfungsi baik jika kode tidak memiliki banyak tag yang dibuka pada satu baris yang tidak juga ditutup pada satu baris atau sebaliknya.
Charlie Gorichanaz
31
Sempurna! Di mac Anda membutuhkan super untuk kunci cmd, jadi seperti: {"keys": ["super + shift + r"], "command": "reindent", "args": {"single_line": false}}
Geert Weening
168
line reindent benar-benar TIDAK bekerja untuk memformat ulang HTML sewenang-wenang. seperti ketika ada beberapa tag html tanpa jeda baris. Jawaban HtmlTidy dari @anneke lebih unggul. Sejauh yang saya tahu, terlepas dari linebreak, itu sepenuhnya dan benar memformat ulang html sumber menjadi sumber indentasi baik.
jpw
33
Untuk pemula, klik "Preferensi", lalu pilih "Pengikat Kunci - Pengguna", dan rekatkan kode peter di antara tanda kurung siku dan simpan file.
sigmapi13
375

Ada setengah lusin cara untuk memformat HTML di Sublime. Saya telah menguji masing-masing plugin yang paling populer (lihat artikel yang saya lakukan di blog saya untuk detail lengkap), tetapi di sini adalah ikhtisar singkat dari beberapa opsi yang paling populer:

Perintah reindent

Pro:

  • Dikirim dengan Sublime, jadi tidak perlu menginstal plugin

Cons:

  • Tidak menghapus baris kosong ekstra
  • Tidak dapat menangani HTML kecil, baris dengan banyak tag terbuka
  • Tidak memformat <script>blok dengan benar

Menandai

Pro:

  • Mendukung ST2 / ST3
  • Menghapus garis kosong ekstra
  • Tidak ada dependensi biner

Cons:

  • Tersedak tag PHP
  • Tidak menangani <script>blok dengan benar

HTMLTidy

Pro:

  • Menangani tag PHP
  • Beberapa pengaturan untuk mengubah format

Cons:

  • Membutuhkan PHP (kembali ke layanan web)
  • Hanya ST2
  • Ditinggalkan?

HTMLBeautify

Pro:

  • Mendukung ST2 / ST3
  • Sederhana dan tidak ada ketergantungan binaray
  • Dukungan untuk OS X, Win dan Linux

Cons:

  • Tersedak sedikit dengan komentar sebaris
  • Apakah memperluas kode diminimalkan / dikompresi

HTML-CSS-JS Prettify

Pro:

  • Mendukung ST2 / ST3
  • Menangani HTML, CSS, JS
  • Integrasi hebat dengan menu Sublime
  • Sangat dapat dikustomisasi
  • Pengaturan per proyek
  • Format pada opsi simpan

Cons:

  • Membutuhkan Node.js
  • Tidak bagus untuk PHP yang disematkan

Mana yang terbaik?

HTML-CSS-JS Prettify adalah pemenang dalam buku saya. Banyak fitur hebat, tidak banyak yang dikeluhkan.

Josh Earl
sumber
12
2nded pada Prettify. Indentasi ulang tidak berfungsi pada html yang saya miliki, tidak dapat menemukan Tag dan HtmlTidy tidak melakukan apa pun ketika saya menyebutnya.
jcollum
2
baru saja mencobanya dan HTML-CSS-JS Prettify bekerja dalam kasus penggunaan saya idealnya (menangani pembersihan html jauh lebih baik daripada paket in-reindent atau reformatter lainnya yang dibangun)
Mark Essel
2
Sudah mencoba yang lain, tetapi satu-satunya yang bekerja (untuk cuplikan HTML) adalah HTML-CSS-JS Prettify. Terima kasih!
zumek
1
Juga ingin menyebutkan bahwa Anda dapat menghapus semua lekukan (setelah markup telah diedit, misalnya) hanya dengan menggunakan fungsi bawaan ST - pilih blok dan tekan ctrl + j.
zumek
1
Apakah ini berfungsi dengan ekstensi non html? saya mencoba di php dan template lainnya, tidak berhasil.
Bsienn
179

Satu-satunya paket yang saya dapat temukan adalah Tag .

Anda dapat menginstalnya menggunakan kontrol paket. https://sublime.wbond.net

Setelah menginstal kontrol paket. Buka kontrol paket ( Preferensi -> Kontrol Paket ) lalu ketik install, tekan enter. Kemudian ketik tagdan tekan enter.

Setelah menginstal Tag, sorot teks dan tekan pintasan Ctrl+ Alt+ F.

dardub
sumber
21
plugin yang lebih baik adalah Tidy HTML
MatthewFord
1
terima kasih ... baru tahu sekarang tentang paket: D. melihat beberapa hal keren untuk teks luhur di sini juga. arlando.net/blog/…
mars-o
3
Jujur ini adalah satu-satunya hal yang bekerja dengan sempurna dengan beberapa kode HTML yang memiliki ratusan jeda baris acak, tag yang tidak tepat bersarang. Ini pada dasarnya membersihkan salah satu halaman HTML paling berantakan yang pernah saya lihat!
justinhartman
1
Saya tidak setuju dengan @ mars-o; plugin ini sangat bagus. Tidy melakukan beberapa hal dengan sangat baik, dan sangat mapan, tetapi plugin ini melakukan beberapa hal menarik lainnya. Terima kasih untuk kirimannya.
zedd45
@JonnyLeeds Agak tidak, tapi tidak selalu benar. Untuk XML secara khusus, coba Indent XMLatau di IndentXantara yang lain.
Joel Mellon
49

Saya merekomendasikan plugin ini: Prettify HTML / CSS / JS , Ini benar-benar berfungsi.

Setelah instalasi, cukup pilih kode dan tekan Ctrl+Shift+H.

Selesai!

Peter Zhu
sumber
3
Anda perlu Node.js untuk menggunakan plugin itu. Tidak terlalu nyaman untuk pengguna normal.
nikoskip
4
Dibandingkan dengan kegunaan plugin ini, kita dapat mengabaikan kesulitan menginstal Node.js;)
Peter Zhu
Instruksi untuk menginstal packagecontrol.io/packages/HTML-CSS-JS%20Prettify bekerja dengan baik. Terima kasih.
Sacky San
41

Hanya tip umum. Apa yang saya lakukan untuk merapikan HTML saya secara otomatis, adalah menginstal paket HTML_Tidy, dan kemudian menambahkan pengikat tombol berikut ke pengaturan default (yang saya gunakan):

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

ini menjalankan HTML Tidy dengan setiap entri. Mungkin ada kekurangan untuk ini, saya cukup baru untuk Sublime sendiri, tetapi tampaknya melakukan apa yang saya inginkan :)

Anneke
sumber
2
Saya membayangkan plugin ini mungkin menjadi sedikit intensif pada file besar, yang mungkin menjadi lambat jika berjalan setiap kali Anda menekan enter?
Rikki
2
Saya menggunakan pengikat tombol ENTER selama sekitar satu hari kemudian menghapusnya. itu terlalu lambat dan terus mengambil kursor ke bagian atas layar di v2.
Ravi Ram
22

Meskipun pertanyaannya adalah untuk HTML, saya juga ingin memberikan info tentang cara memformat otomatis kode Javascript Anda untuk Sublime Text 2 ;

Anda dapat memilih semua kode Anda ( ctrl+ A) dan menggunakan fungsionalitas dalam aplikasi, reindent ( Edit-> Line-> Reindent) atau Anda dapat menggunakan plugin format JsFormat Sublime Text 2jika Anda ingin memiliki pengaturan yang lebih dapat disesuaikan tentang cara memformat kode Anda selain menambahkan tab default / pengaturan indentasi Sublime Text.

https://github.com/jdc0589/JsFormat

Anda dapat dengan mudah menginstal JsFormat dengan menggunakan Kontrol Paket ( Preferences-> Package Control) Buka kontrol paket lalu ketik instal, tekanenter . Kemudian ketik js formatdan tekan enter, selesai. (Pengontrol paket akan menunjukkan status pemasangan dengan sukses dan kesalahan pada bilah kiri bawahSublime )

Tambahkan baris berikut ke binding utama Anda ( Preferences-> Key Bindings User)

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

Saya menggunakan ctrl+ alt+ 2, Anda dapat mengubah kunci pintas ini apa pun yang Anda mau. Sejauh ini, JsFormatmerupakan plugin yang bagus, layak untuk dicoba!

Semoga ini bisa membantu seseorang.

Gokhan Tank
sumber
13

Bagi saya, HTML Prettifysolusinya sangat sederhana. Saya pergi ke halaman HTML Prettify .

  1. Membutuhkan Sublime Package Manager
  2. Ikuti Instruksi untuk menginstal manajer paket di sini
  3. diketik cmd + shift + puntuk membuka menu
  4. Diketik prettify
  5. Pilih HTML prettifypilihan di menu

Ledakan. Selesai Tampak hebat

insaineyesay
sumber
Solusi ini bekerja persis seperti yang saya inginkan dan membutuhkan semua kecuali 2 detik jika Anda sudah menginstal PM. Mungkin ingin menambahkan bahwa Anda perlu menginstal paket prettify.
doogle
Catatan: Bagi siapa pun yang tertarik, plugin dalam jawaban ini memerlukan pemasangan node.js.
Nama Palsu
Tidak bekerja dengan baik; hanya membuat indentasi / baris-memecah HTML hingga tingkat indentasi tertentu dan membiarkan sisanya tidak terindentasi dan pada baris yang sama.
Jonathan
11

Cukup buka

Edit -> Tag -> Tag format otomatis pada dokumen

Ricardo Martins
sumber
6
Saya tidak melihat opsi menu itu di Sublime Text 2 Version 2.0.1, Build 2217Mac. Apakah Anda yakin itu fitur standar?
ostergaard
1
Anda harus menginstal Tag dari Package Manager. Tapi saya punya satu masalah dengan itu. Ketika <b>somthing</b>diikuti oleh koma, koma diletakkan pada baris baru, menghasilkan ruang antara sesuatu dan koma dalam tampilan browser.
reitermarkus
9

Saya membuat Paket yang disebut HTMLBeautify yang melakukan pekerjaan yang layak untuk memformat ulang HTML. Saya mendasarkannya pada skrip Perl yang saya temukan pada tahun 1997 — saya memutakhirkannya agar berfungsi dengan semua tag modern baru yang sudah ketinggalan jaman. :)

Lihatlah dan beri tahu saya apa yang Anda pikirkan!

https://github.com/rareyman/HTMLBeautify

Ross
sumber
3
Saya menginstalnya tetapi ketika saya menjalankan HTMLBeautify pada file demo itu tidak melakukan apa-apa. Sebuah pesan Menampilkan bahwa file tersebut dipercantik, tetapi tidak ada yang terjadi pada Isi file.
Sam
Dugaan saya adalah Anda menggunakan Windows ...? Di Windows, Anda harus memulai ulang SublimeText 2 agar skrip tersedia. Cobalah itu dan beri tahu saya apa yang terjadi. :)
Ross
Saya lakukan, skrip tersedia, hanya saja tidak mengubah apa pun di file.
Sam
Aneh. Saya mengasumsikan semua plugin / paket lain berfungsi seperti biasa? Saya sepertinya tidak bisa meniru masalah ini di lingkungan pengujian saya — jadi saya tidak yakin harus mengatakan apa kepada Anda. :(
Ross
Terlepas dari memformat semuanya berfungsi seperti yang saya harapkan - mungkin itu karena saya menjalankan versi windows Jerman?
Sam
7

Saya pikir inilah yang Anda cari:

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

Allen Bargi
sumber
Saya mengikuti instruksi tetapi tidak berhasil. Plugin memberi saya kesalahan. "'{' tidak dikenali sebagai perintah internal atau eksternal, program yang dapat dijalankan atau file batch."
Ravi Ram
Saya percaya bahwa paket spesifik memerlukan Node untuk diinstal yang merupakan tugas tambahan ... dandean.com/nodejs-npm-express-osx abaikan NPM dan ekspres
bgreater
@ Allan Apakah ini berfungsi pada Windows. Saya memiliki node.js yang diinstal di komputer saya.
Anirudha Gupta
7

Saya belum memiliki hak istimewa untuk berkomentar jadi ini hanyalah informasi tambahan yang terkait dengan jawaban @ peter di atas.

Saya menemukan HTML tidak sejajar seperti yang diharapkan jika komentar bersyarat IE di header tidak sepenuhnya in-line misalnya flush ke kiri:

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

Ada plugin CodeFormatter open source yang bagus , yang (bersama pengindeksan ulang) dapat mempercantik kode kotor meskipun semuanya dalam satu baris.

side2k
sumber
Catatan: Ini membutuhkan pemasangan PHP lokal.
Nama Palsu
Saya telah menemukan ini sebagai satu - satunya plugin yang bagus .. dan saya sudah mencoba hampir semuanya.
shaneparsons
Sepertinya ini memiliki pengaturan untuk memformat atribut HTML. Saya tidak melihat plugin lain melakukannya? Atau saya kehilangan satu?
Basil
4

Saya menggunakan rapi bersama-sama dengan sistem build khusus untuk membuat HTML cantik.

Saya memiliki HTMLTidy.sublime-build di direktori Paket / Pengguna / saya:

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

dan file tidy_config.cfg di direktori yang sama:

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

Dan cukup pilih sistem bangun dan tekan ctrl+ batau cmd+b untuk memformat ulang konten file. Satu masalah kecil dengan itu adalah bahwa ST2 tidak secara otomatis memuat ulang file sehingga untuk melihat hasil Anda harus beralih ke beberapa file lain dan kembali (atau ke aplikasi lain dan kembali).

Di Mac, saya menggunakan macports untuk menginstal rapi, di Windows Anda harus mengunduhnya sendiri dan menentukan direktori kerja di sistem build, di mana rapi berada:

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

atau menambahkannya ke PATH.

rchl
sumber
4

Anda dapat mengatur tombol pintas dengan F12mudah !!!

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

lihat detail di sini .

Sumeta Pongpanna
sumber
6
Jawaban yang tidak berharga; ini merupakan duplikat dari jawaban yang diterima.
Mark Amery