Як переформатувати 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.