Як переформатувати HTML-код за допомогою Sublime Text 2?


1312

У мене є неправильно відформатований HTML-код, який я хотів би переформатувати. Чи є команда, яка автоматично переформатує HTML-код у Sublime Text 2, щоб він виглядав краще та легше читався?



1
Також якщо ви використовуєте Vintage режим, ви можете просто використовувати gg = G у звичайному режимі.
Wiktor Mociun

3
Ви можете витрачати свій час на читання цілої сторінки, а можете просто отримати github.com/akalongman/sublimetext-codeformatter та повернутися до роботи.
shaneparsons

Відповіді:


2079

Для цього вам не потрібні плагіни. Просто виберіть усі рядки ( Ctrl A), а потім у меню виберіть Правка → Рядок → Reindent. Це спрацює, якщо ваш файл буде збережено з розширенням, яке містить HTML як .htmlабо .php.

Якщо ви робите це часто, вам може бути корисне таке ключове відображення:

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

Якщо ваш файл не збережено (наприклад, ви просто вставили фрагмент у нове вікно), ви можете вручну встановити мову для відступу, вибравши меню Перегляд → Синтаксис → language of choiceперед тим, як вибрати опцію нагадування.


19
До речі, це працює і для вихідного коду без HTML, як, наприклад, Ruby або JS
peter

78
Це чудово працює, якщо в коді немає декількох тегів, що відкриваються в одному рядку, які також не закриваються на одному рядку або навпаки.
Чарлі Горічаназ

31
Ідеально! На mac вам потрібен супер для ключа cmd, тому такі: {"keys": ["super + shift + r"], "command": "reindent", "args": {"single_line": false}}
Geert Відмовлення

168
line reindent абсолютно НЕ працює для переформатування довільного HTML. наприклад, коли є кілька тегів HTML без розривів рядків. Відповідь HtmlTidy від @anneke є вищою. Наскільки я можу сказати, незалежно від розривів рядків, він повністю і належним чином переформатує вихідний HTML у добре розрізнене джерело.
jpw

33
Для новачків натисніть «Налаштування», потім виберіть «Прив’язка клавіш - Користувач» та вставте код петера між квадратними дужками та збережіть файл.
sigmapi13

375

Існує півдесятка або близько способів форматування HTML в Sublime. Я перевірив кожен із найпопулярніших плагінів (див. Запис, який я робив у своєму блозі, для отримання детальної інформації), але ось короткий огляд деяких найпопулярніших варіантів:

Команда Reindent

Плюси:

  • Поставляється з Sublime, тому не потрібно встановлювати плагін

Мінуси:

  • Не видаляє зайві порожні рядки
  • Не вдається обробити мінімізований HTML, рядки з кількома відкритими тегами
  • <script>Блоки не форматуються належним чином

Тег

Плюси:

  • Підтримує ST2 / ST3
  • Видаляє зайві порожні рядки
  • Ніяких бінарних залежностей

Мінуси:

  • Заглушує теги PHP
  • Не працює з <script>блоками правильно

HTMLTidy

Плюси:

  • Обробляє теги PHP
  • Деякі налаштування для налаштування форматування

Мінуси:

  • Потрібна PHP (повертається до веб-сервісу)
  • Тільки ST2
  • Занедбаний?

HTMLBeautify

Плюси:

  • Підтримує ST2 / ST3
  • Прості і не залежні від бінара
  • Підтримка OS X, Win та Linux

Мінуси:

  • Трохи задихається з вбудованими коментарями
  • Чи розширюється мінімізований / стислий код

HTML-CSS-JS Досить

Плюси:

  • Підтримує ST2 / ST3
  • Обробляє HTML, CSS, JS
  • Відмінна інтеграція з меню Sublime
  • Високо налаштовується
  • Налаштування проекту
  • Формат при збереженні

Мінуси:

  • Потрібен Node.js
  • Не чудово підходить для вбудованого PHP

Що найкраще?

HTML-CSS-JS Prettify - переможець у моїй книзі. Багато чудових функцій, не надто скаржитися.


12
2nded на Prettify. Повторний відступ не працював на html, який я мав, не міг знайти тег, і HtmlTidy нічого не зробив, коли я його зателефонував.
jcollum

2
просто випробував це, і HTML-CSS-JS Prettify працював у моєму випадку використання ідеально (обробляв очищення html набагато краще, ніж вбудований реіндент або інші пакети переформатування)
Марк Ессел,

2
Спробували всі інші, але єдиний, хто працював (для фрагмента HTML), був HTML-CSS-JS Prettify. Дякую!
зумек

1
Також хочеться зазначити, що ви можете видалити всі відступи (після редагування розмітки, наприклад), просто скориставшись вбудованою функціональністю ST - виберіть блок та натисніть ctrl + j.
зумек

1
Чи працює це з розширеннями без html? Я спробував на php та інших шаблонах, він не працював.
Bsienn

179

Єдиний пакет, який мені вдалося знайти, - це тег .

Ви можете встановити його за допомогою керування пакетом. https://sublime.wbond.net

Після встановлення управління пакетом. Перейдіть до управління пакетом ( Налаштування -> Контроль пакунків ), а потім наберіть install, натисніть enter. Потім наберіть tagі натисніть enter.

Після встановлення тегу виділіть текст і натисніть ярлик Ctrl+ Alt+ F.


21
кращий плагін - Tidy HTML
MatthewFord

1
дякую ... щойно знав тепер про пакунки: D. побачив тут і класні речі для піднесеного тексту. arlando.net/blog/…
mars-o

3
Це чесно - це єдине, що прекрасно співпрацювало з деяким HTML-кодом, який мав сотні випадкових розривів рядків, тегів, які були неправильно вкладені. Це в основному очистило одну з найсильніших HTML-сторінок, яку я коли-небудь бачив!
Justinhartman

1
Я не згоден з @ mars-o; цей плагін чудовий. Tidy робить дуже багато справ, і це дуже добре, але цей плагін робить дуже багато інших цікавих речей. Дякую за пост.
zedd45

@JonnyLeeds Це так, але не завжди правильно. Спеціально для XML спробуйте Indent XMLабо IndentXсеред інших.
Джоел Меллон

49

Я рекомендую цей плагін: HTML / CSS / JS Prettify , він справді працює.

Після установки просто виберіть код і натисніть Ctrl+Shift+H.

Готово!


3
Для використання цього плагіна вам потрібен Node.js. Не дуже зручно для звичайних користувачів.
nikoskip

4
Порівнюючи корисність цього плагіна, ми можемо ігнорувати проблеми встановлення Node.js;)
Пітер Чжу

Інструкції щодо встановлення packagecontrol.io/packages/HTML-CSS-JS%20Prettify чудово працювали. Дякую.
Саккі Сан

41

Просто загальна порада. Що я зробив, щоб автоматично привести в дію свій HTML, встановив пакет HTML_Tidy, а потім додав наступні вкладки в налаштування за замовчуванням (які я використовую):

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

це запускає HTML Tidy з кожним входом. У цьому можуть бути і недоліки, я абсолютно новачок у Sublime, але, здається, роблю те, що хочу :)


2
Я думаю, що цей плагін може стати інтенсивним для великих файлів, який може стати млявим, якщо він запускається кожного разу, коли ви натискаєте клавішу Enter?
Рікі

2
Я користувався клавішею ENTER близько доби, потім видалив її. він був надто повільним і продовжував вести курсор у верхній частині екрана в v2.
Раві Рам

22

Хоча питання стосується HTML, я також хотів би дати інформацію про те, як це зробити автоматично відформатувати свій код Javascript для Sublime Text 2 ;

Ви можете вибрати весь свій код ( ctrl+ A) і використовувати функцію в додатку, reindent ( Edit-> Line-> Reindent) або ви можете використовувати плагін форматування JsFormat, Sublime Text 2якщо ви хочете мати більше налаштованих налаштувань щодо того, як відформатувати ваш код у додаток до налаштування вкладки / відступ тексту за замовчуванням "Текст піднесеного".

https://github.com/jdc0589/JsFormat

Ви можете легко встановити JsFormat за допомогою Package Control ( Preferences-> Package Control) Відкрити керування пакетом, а потім введіть інсталяцію, натиснітьenter . Потім наберіть js formatі натисніть enter, ви закінчили. (Контролер пакета буде показувати стан установки з успіхом та помилками в нижній лівій смузі Sublime)

Додайте наступний рядок до основних прив'язок ( Preferences-> Key Bindings User)

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

Я використовую ctrl+ alt+ 2, ви можете змінити цю клавішу швидкого доступу, що завгодно. Так далеко,JsFormat це гарний плагін, варто його спробувати!

Сподіваюся, що це комусь допоможе.



13

Для мене HTML Prettifyрішення було надзвичайно простим. Я перейшов на сторінку HTML Prettify .

  1. Потрібні Sublime Package Manager
  2. Дотримуйтесь інструкцій із встановлення тут менеджера пакунків
  3. набрав cmd + shift + p щоб відкрити меню
  4. Набрав prettify
  5. Оберіть HTML prettifyвибір у меню

Бум. Зроблено. Виглядає здорово


Це рішення працювало саме так, як я цього хотів, і займає всі, крім двох секунд, якщо у вас вже встановлений ПМ. Можливо, ви хочете додати, що вам потрібно встановити гарний пакет.
doogle

Примітка. Для всіх, хто цікавиться, для цього плагіна потрібна установка node.js.
Підроблене ім’я

Не працює належним чином; лише з відступом / розбиттям рядка HTML до певного рівня відступу, а решта залишилася без відступу та в тому ж рядку.
Джонатан

11

Просто перейдіть до

Редагувати -> Тег -> Теги для автоматичного форматування документа


6
Я не бачу цієї опції меню в Sublime Text 2 Version 2.0.1, Build 2217Mac. Ви впевнені, що це стандартна функція?
ostergaard

1
Вам потрібно встановити тег у менеджера пакунків. Але у мене є одна проблема з цим. Коли <b>somthing</b>слідує кома, кома ставиться на новий рядок, в результаті чого у вікні браузера з’являється пробіл між чимось і комою.
reitermarkus

9

Я створив пакет під назвою HTMLBeautify який робить гідну роботу з переформатуванням HTML. Я базував його на сценарії Perl, який я знайшов ще в 1997 році - я оновив його для роботи з усіма новими стильними сучасними тегами. :)

Перевірте це і дайте мені знати, що ви думаєте!

https://github.com/rareyman/HTMLBeautify


3
Я встановив його, але коли я запускаю HTMLBeautify на демонстраційному файлі, він нічого не робить. Повідомлення Відображає, що файл прикрашений, але з файлом нічого не відбувається.
Сем

Я здогадуюсь, що ви використовуєте Windows…? У Windows потрібно перезапустити SublimeText 2, щоб сценарій був доступний. Спробуйте це і дайте мені знати, що відбувається. :)
Росс

Я зробив, сценарій був доступний, він просто нічого не змінив у файлі.
Сем

Дивно. Я припускаю, що всі інші плагіни / пакети працюють як нормально? Здається, я не можу повторити цю проблему в своїх тестових середовищах - тому я не знаю, що вам сказати. :(
Росс

Окрім форматування, все працює так, як я цього очікував - можливо, це тому, що я використовую німецьку версію Windows?
Сем

7

Я думаю, що це те, що ви шукаєте:

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


Я дотримувався інструкцій, але це не спрацювало. Плагін видає мені помилки. "'{' не розпізнається як внутрішня чи зовнішня команда, функціонуюча програма чи пакетний файл."
Раві Рам

Я вважаю, що специфічний пакет вимагає встановлення Node, що є додатковим зобов'язанням ... dandean.com/nodejs-npm-express-osx ігнорувати NPM та express
bgreater

@Allan Це робота в Windows. У мене на комп'ютері встановлений node.js.
Анірудха Гупта

7

Я ще мати привілей коментар , так що це просто додаткова інформація , пов'язана з @ петровський відповідь вище відповіді.

Я виявив, що HTML не вирівнюється так, як очікувалося, якщо умовні коментарі IE у заголовку не були повністю рядковими, наприклад, флеш ліворуч:

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

Є чудовий плагін з відкритим кодом CodeFormatter , який (разом з повторним нагадуванням ) може прикрасити брудний код, навіть він знаходиться в одному рядку.


Примітка. Для цього потрібна локальна установка PHP.
Підроблена назва

Я виявив, що це єдиний гарний плагін .. і я спробував майже всі з них.
shaneparsons

Схоже, у цього налаштування для форматування атрибутів HTML. Я не бачу, щоб жоден з інших плагінів це робив? Або я пропускаю його?
Василь

4

Я використовую акуратно разом із спеціальною системою збирання, щоб вподобати HTML.

Я маю HTMLTidy.sublime-build у своєму пакеті / користувачеві / каталозі:

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

та файл tidy_config.cfg у тому самому каталозі:

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

І просто виберіть систему складання і натисніть ctrl+ bабо cmd+, bщоб переформатувати вміст файлу. Одна незначна проблема з цим полягає в тому, що ST2 не автоматично перезавантажує файл, щоб побачити результати, вам доведеться перейти на якийсь інший файл і назад (або на інший додаток і назад).

На Mac я використовував macports для встановлення охайного, у Windows вам доведеться завантажити його самостійно та вказати робочий каталог у системі збирання, де розташований охайний:

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

або додати його в ПАТ.


4

Ви можете встановити клавішу швидкого доступу F12легко!

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

детальну інформацію дивіться тут .


6
Нікчемна відповідь; це дублікат прийнятої відповіді.
Марк Амері
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.