Làm cách nào để định dạng lại mã HTML bằng Sublime Text 2?


1313

Tôi đã có một số mã HTML được định dạng kém mà tôi muốn định dạng lại. Có một lệnh sẽ tự động định dạng lại mã HTML trong Sublime Text 2 để nó trông đẹp hơn và dễ đọc hơn không?



1
Ngoài ra nếu bạn sử dụng chế độ Vintage, bạn chỉ cần sử dụng gg = G ở chế độ bình thường.
Wiktor Mociun

3
Bạn có thể lãng phí thời gian để đọc toàn bộ trang này hoặc bạn có thể lấy github.com/akalongman/sublimetext-codeformatter và quay lại làm việc.
shaneparsons

Câu trả lời:


2080

Bạn không cần bất kỳ plugin nào để làm điều này. Chỉ cần chọn tất cả các dòng ( Ctrl A) và sau đó từ menu chọn Chỉnh sửa → Dòng → Reindent. Điều này sẽ hoạt động nếu tệp của bạn được lưu với một phần mở rộng có chứa HTML như .htmlhoặc .php.

Nếu bạn làm điều này thường xuyên, bạn có thể thấy ánh xạ khóa này hữu ích:

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

Nếu tệp của bạn chưa được lưu (ví dụ: bạn vừa dán đoạn trích vào cửa sổ mới), bạn có thể đặt ngôn ngữ thụt lề theo cách thủ công bằng cách chọn menu Xem → Cú pháp → language of choicetrước khi chọn tùy chọn reindent.


19
Nhân tiện, điều này cũng hoạt động với mã nguồn không phải HTML, ví dụ như Ruby hoặc JS
peter

78
Điều này hoạt động rất tốt nếu mã không có nhiều thẻ mở trên một dòng mà cũng không đóng trên một dòng hoặc ngược lại.
Charlie Gorichanaz

31
Hoàn hảo! Trên mac, bạn cần siêu cho khóa cmd, vì vậy: {"phím": ["super + shift + r"], "lệnh": "reindent", "args": {"single_line": false}}
Geert Xem

168
dòng reindent hoàn toàn KHÔNG hoạt động để định dạng lại HTML tùy ý. chẳng hạn như khi có nhiều thẻ html mà không ngắt dòng. Câu trả lời HtmlTidy từ @anneke là vượt trội. Theo như tôi có thể nói, bất kể ngắt dòng, nó sẽ định dạng lại hoàn toàn và đúng cách nguồn html thành nguồn được thụt lề độc đáo.
jpw

33
Đối với người mới, nhấp vào "Tùy chọn", sau đó chọn "Liên kết chính - Người dùng" và dán mã của peter giữa dấu ngoặc vuông và lưu tệp.
sigmapi13

375

Có nửa tá cách để định dạng HTML trong Sublime. Tôi đã thử nghiệm từng plugin phổ biến nhất (xem phần viết tôi đã viết trên blog của mình để biết chi tiết đầy đủ), nhưng đây là tổng quan nhanh về một số tùy chọn phổ biến nhất:

Lệnh tuần lộc

Ưu điểm:

  • Giao hàng với Sublime, vì vậy không cần cài đặt plugin

Nhược điểm:

  • Không xóa thêm dòng trống
  • Không thể xử lý HTML đã rút gọn, các dòng có nhiều thẻ mở
  • Không định dạng đúng <script>khối

Nhãn

Ưu điểm:

  • Hỗ trợ ST2 / ST3
  • Loại bỏ các dòng trống thêm
  • Không phụ thuộc nhị phân

Nhược điểm:

  • Trò chuyện về các thẻ PHP
  • Không xử lý <script>các khối chính xác

HTMLTidy

Ưu điểm:

  • Xử lý các thẻ PHP
  • Một số cài đặt để điều chỉnh định dạng

Nhược điểm:

  • Yêu cầu PHP (quay lại dịch vụ web)
  • Chỉ ST2
  • Bị bỏ rơi?

HTMLBeautify

Ưu điểm:

  • Hỗ trợ ST2 / ST3
  • Đơn giản và không phụ thuộc binaray
  • Hỗ trợ cho OS X, Win và Linux

Nhược điểm:

  • Nghẹn ngào một chút với ý kiến ​​nội tuyến
  • Có mở rộng mã được thu nhỏ / nén

HTML-CSS-JS Prettify

Ưu điểm:

  • Hỗ trợ ST2 / ST3
  • Xử lý HTML, CSS, JS
  • Tích hợp tuyệt vời với các menu của Sublime
  • Khả năng tùy biến cao
  • Cài đặt theo dự án
  • Định dạng trên tùy chọn lưu

Nhược điểm:

  • Yêu cầu Node.js
  • Không tuyệt vời cho PHP nhúng

Tốt nhất?

HTML-CSS-JS Prettify là người chiến thắng trong cuốn sách của tôi. Rất nhiều tính năng tuyệt vời, không có nhiều để phàn nàn.


12
Đứng thứ 2 trên Prettify. Việc thụt lại không hoạt động trên html mà tôi có, không thể tìm thấy Tag và HtmlTidy không làm gì khi tôi gọi nó.
jcollum

2
chỉ cần dùng thử và HTML-CSS-JS Prettify hoạt động trong trường hợp sử dụng của tôi một cách lý tưởng (xử lý dọn dẹp html tốt hơn nhiều so với các gói reindent hoặc các bộ cải cách khác được xây dựng)
Mark Essel

2
Đã thử tất cả những cái khác, nhưng cái duy nhất hoạt động (cho một đoạn mã HTML) là HTML-CSS-JS Prettify. Cảm ơn bạn!
zumek

1
Cũng muốn đề cập rằng bạn có thể xóa tất cả các vết lõm (chẳng hạn như khi đánh dấu đã được chỉnh sửa) chỉ bằng cách sử dụng chức năng tích hợp của ST - chọn khối và nhấn ctrl + j.
zumek

1
Cái này có hoạt động với các phần mở rộng không html không? Tôi đã thử trên php và các mẫu khác, nó không hoạt động.
Bsienn 16/07/2015

179

Gói duy nhất tôi có thể tìm thấy là Tag .

Bạn có thể cài đặt nó bằng cách sử dụng điều khiển gói. https://sublime.wbond.net

Sau khi cài đặt gói điều khiển. Chuyển đến kiểm soát gói ( Tùy chọn -> Kiểm soát gói ) sau đó nhập install, nhấn enter. Sau đó gõ tagvà đánh enter.

Sau khi cài đặt Tag, tô sáng văn bản và nhấn phím tắt Ctrl+ Alt+ F.


21
một plugin tốt hơn là Tidy HTML
MatthewFord

1
cảm ơn ... bây giờ mới biết về các gói: D. thấy một số thứ tuyệt vời cho văn bản tuyệt vời ở đây là tốt. arlando.net/blog/ từ
mars-o

3
Đây là điều duy nhất hoạt động hoàn hảo với một số mã HTML có hàng trăm ngắt dòng ngẫu nhiên, các thẻ được lồng không chính xác. Về cơ bản, nó đã dọn sạch một trong những trang HTML lộn xộn nhất tôi từng thấy!
justinhartman

1
Tôi không đồng ý với @ mars-o; Plugin này rất tuyệt. Tidy thực hiện một số điều thực sự tốt và rất thành lập, nhưng plugin này thực hiện khá nhiều điều thú vị khác. Cảm ơn vì bài đăng.
zedd45

@JonnyLeed Kiểu như vậy, nhưng không phải lúc nào cũng chính xác. Đối với XML cụ thể, hãy thử Indent XMLhoặc IndentXtrong số những người khác.
Joel Mellon

49

Tôi khuyên dùng plugin này: HTML / CSS / JS Prettify , Nó thực sự hoạt động.

Sau khi cài đặt, chỉ cần chọn mã và nhấn Ctrl+Shift+H.

Làm xong!


3
Bạn cần Node.js để sử dụng plugin đó. Không thoải mái lắm cho người dùng bình thường.
nikoskip 3/03/2015

4
So sánh với tính hữu dụng của plugin này, chúng ta có thể bỏ qua sự cố khi cài đặt Node.js;)
Peter Zhu

Hướng dẫn cài đặt packagecontrol.io/packages/HTML-CSS-JS%20Prettify hoạt động rất tốt. cảm ơn.
Sacky San

41

Chỉ là một mẹo chung. Những gì tôi đã làm để tự động dọn dẹp HTML của mình, đã cài đặt gói HTML_Tidy và sau đó thêm liên kết phím sau vào cài đặt mặc định (mà tôi sử dụng):

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

Điều này chạy HTML Tidy với mỗi lần nhập. Có thể có những hạn chế về điều này, bản thân tôi khá mới mẻ với Sublime, nhưng dường như nó làm những gì tôi muốn :)


2
Tôi tưởng tượng plugin này có thể trở nên hơi chuyên sâu đối với các tệp lớn, có thể trở nên chậm chạp nếu nó chạy mỗi khi bạn nhấn enter?
Rikki

2
Tôi đã sử dụng keybinding trong khoảng một ngày và sau đó gỡ bỏ nó. nó quá chậm và liên tục đưa con trỏ lên đỉnh màn hình trong v2.
Ravi Ram

22

Hoàn toàn là câu hỏi dành cho HTML, tôi cũng muốn cung cấp thông tin về cách tự động định dạng mã Javascript của bạn cho Sublime Text 2 ;

Bạn có thể chọn tất cả mã của mình ( ctrl+ A) và sử dụng chức năng trong ứng dụng, reindent ( Edit-> Line-> Reindent) hoặc bạn có thể sử dụng plugin định dạng JsFormat Sublime Text 2nếu bạn muốn có thêm cài đặt tùy chỉnh về cách định dạng mã của mình để thêm vào Cài đặt tab / thụt lề mặc định của Sublime Text.

https://github.com/jdc0589/JsFormat

Bạn có thể dễ dàng cài đặt JsFormat bằng cách sử dụng Điều khiển gói ( Preferences-> Package Control) Mở điều khiển gói sau đó nhập cài đặt, nhấnenter . Sau đó gõ js formatvà nhấn enter, bạn đã hoàn thành. (Bộ điều khiển gói sẽ hiển thị trạng thái cài đặt thành công và lỗi ở thanh dưới cùng bên trái của Sublime)

Thêm dòng sau vào các ràng buộc chính của bạn ( Preferences-> Key Bindings User)

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

Tôi đang sử dụng ctrl+ alt+ 2, bạn có thể thay đổi phím tắt này bất cứ điều gì bạn muốn. Cho đến nay, JsFormatlà một plugin tốt, đáng để thử nó!

Hy vọng điều này sẽ giúp được ai đó.



13

Đối với tôi, HTML Prettifygiải pháp cực kỳ đơn giản. Tôi đã đi đến trang HTML Prettify .

  1. Cần Sublime Package Manager
  2. Thực hiện theo Hướng dẫn cài đặt trình quản lý gói tại đây
  3. đánh máy cmd + shift + pđể đưa lên thực đơn
  4. Đánh máy prettify
  5. Lựa HTML prettifychọn trong menu

Bùng nổ. Làm xong. Trông thật tuyệt


Giải pháp này hoạt động chính xác như tôi muốn và mất tất cả trừ 2 giây nếu bạn đã cài đặt PM. Có thể muốn thêm rằng bạn cần cài đặt gói prettify.
doogle

Lưu ý: Đối với bất kỳ ai quan tâm, plugin trong câu trả lời này yêu cầu cài đặt node.js.
Tên giả

Không hoạt động đúng; chỉ thụt lề / ngắt dòng HTML đến một mức thụt lề nhất định và khiến phần còn lại không được thụt lề và trên cùng một dòng.
Jonathan

11

Đơn giản chỉ cần đi đến

Chỉnh sửa -> Thẻ -> Thẻ định dạng tự động trên tài liệu


6
Tôi không thấy tùy chọn menu đó Sublime Text 2 Version 2.0.1, Build 2217trên Mac. Bạn có chắc chắn đó là một tính năng tiêu chuẩn?
Ostergaard

1
Bạn phải cài đặt Thẻ từ Trình quản lý gói. Nhưng tôi có một vấn đề với nó. Khi <b>somthing</b>được theo sau bởi dấu phẩy, dấu phẩy được đặt trên một dòng mới, dẫn đến khoảng cách giữa một cái gì đó và dấu phẩy trong chế độ xem trình duyệt.
reitermarkus

9

Tôi đã tạo một Gói có tên HTMLBeautify , thực hiện tốt công việc định dạng lại HTML. Tôi đã dựa trên kịch bản Perl mà tôi đã tìm thấy vào năm 1997. Tôi đã cập nhật nó để hoạt động với tất cả các thẻ hiện đại mới. :)

Kiểm tra nó và cho tôi biết những gì bạn nghĩ!

https://github.com/rareyman/HTMLBeautify


3
Tôi đã cài đặt nó nhưng khi tôi chạy HTMLBeautify trên tệp demo thì không có gì. Một thông báo Hiển thị rằng tệp được làm đẹp, nhưng không có gì xảy ra với Nội dung tệp.
Sam

Tôi đoán là bạn đang sử dụng WindowsTHER? Trên Windows, bạn cần khởi động lại SublimeText 2 để tập lệnh có sẵn. Hãy thử điều đó và cho tôi biết những gì xảy ra. :)
Ross

Tôi đã làm, kịch bản có sẵn, nó chỉ không thay đổi bất cứ điều gì trong tập tin.
Sam

Lạ thật. Tôi đang giả sử tất cả các plugin / gói khác hoạt động như bình thường? Tôi dường như không thể sao chép vấn đề này trong môi trường thử nghiệm của mình, vì vậy tôi không chắc phải nói gì với bạn. :(
Ross

Ngoài việc định dạng mọi thứ hoạt động như tôi mong đợi - có thể là vì tôi đang chạy phiên bản tiếng Đức của windows?
Sam

7

Tôi nghĩ rằng đây là những gì bạn đang tìm kiếm:

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


Tôi đã làm theo hướng dẫn nhưng nó không hoạt động. Các plugin cho tôi lỗi. "'{' không được công nhận là lệnh nội bộ hoặc bên ngoài, chương trình có thể hoạt động hoặc tệp bó."
Ravi Ram

Tôi tin rằng gói cụ thể yêu cầu Node phải được cài đặt, đây là một cam kết bổ sung ... dandean.com/nodejs-npm-express-osx bỏ qua NPM và thể hiện
bg [

@ ALLan Đây có phải là công việc trên Windows. Tôi đã cài đặt node.js trong máy tính của mình.
Anirudha Gupta

7

Tôi vẫn chưa có đặc quyền để bình luận vì vậy đây chỉ là thông tin bổ sung liên quan đến câu trả lời của @ peter ở trên.

Tôi thấy HTML không phù hợp như mong đợi nếu các bình luận có điều kiện của IE trong tiêu đề không hoàn toàn thẳng hàng, ví dụ như lật sang trái:

<!--[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ó một plugin CodeFormatter mã nguồn mở đẹp , mà (cùng với việc giới thiệu lại) có thể làm đẹp mã bẩn ngay cả khi tất cả đều nằm trong một dòng.


Lưu ý: Điều này đòi hỏi một cài đặt PHP cục bộ.
Tên giả

Tôi đã thấy đây là plugin tốt duy nhất .. và tôi đã thử hầu hết tất cả chúng.
shaneparsons

Có vẻ như cái này có các cài đặt để định dạng các thuộc tính HTML. Tôi không thấy bất kỳ plugin nào khác làm điều đó? Hay tôi đang thiếu một cái?
Basil

4

Tôi đang sử dụng gọn gàng cùng với hệ thống xây dựng tùy chỉnh để cải thiện HTML.

Tôi có HTMLTidy.sublime-build trong thư mục Gói / Người dùng / của tôi:

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

và tệp tidy_config.cfg trong cùng thư mục:

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

Và chỉ cần chọn xây dựng hệ thống và nhấn ctrl+ bhoặc cmd+ bđể định dạng lại nội dung tệp. Một vấn đề nhỏ đó là ST2 không tự động tải lại tệp để xem kết quả bạn phải chuyển sang một số tệp khác và quay lại (hoặc sang ứng dụng khác và quay lại).

Trên Mac, tôi đã sử dụng macports để cài đặt gọn gàng, trên Windows, bạn phải tự tải xuống và chỉ định thư mục làm việc trong hệ thống xây dựng, nơi đặt gọn gàng:

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

hoặc thêm nó vào PATH.


4

bạn có thể đặt phím tắt F12dễ dàng !!!

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

xem chi tiết tại đây .


6
Câu trả lời vô giá trị; đây là một bản sao của câu trả lời được chấp nhận
Đánh dấu Amery
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.