Чи є функція автоматичного відступів HTML або плагін для Sublime Text (він же покращує / прикрасить / форматує)?


23

Наприклад, щось змінити:

<section><article><h1></h1><p></p></article></section>

до:

<section>
  <article>
    <h1></h1>
    <p></p>
  </article>
</section>

... що працює на повних сторінках та фрагментах.

  • Вбудована Edit > Line > Reindentнастройка не робить цього
  • Плагін HTMLTidy додає headта bodyпозначає теги, тому він не працює для партій, у нього також є різні інші проблеми
  • Тег плагіна має різні проблеми , достатньо, щоб він фактично не працював
  • Плагін HTMLPrettify має різні проблеми , потребує node.js і не оновлювався протягом місяців
  • gist.github.com/mcdonc/3898894 вимагає зробити це, але вимагає Emacs

(У Блокноті ++ було автоматичне відступ, Dreamweaver застосував форматування джерела, Aptana має формат тощо)

Плагін Tag неправильно обробляє вбудовані теги , наприклад, використовуючи його в цьому фрагменті:

<p>foo<a>bar<span>baz<span>qux</span></span></a></p>

призводить до:

<p>
    foo
    <a>
        bar
        <span>
            baz
            <span>qux</span>
        </span>
    </a>
</p>

Яке питання? З вашого поста незрозуміло, в чому питання.
Бред Паттон

Відредагований заголовок запитуючий. Я намагаюся знайти спосіб автоматичного відступу HTML в Sublime Text.
користувач110241


Дякую, я спробував кожне рішення в цій темі, жодне з них не працює. Я перерахував причини, чому багато з них не працюють у цій темі.
користувач110241

Я думаю, що це найкраще робоче рішення: jsbeautifier.org У мене були однакові вимоги до формату декількох вбудованих тегів. Цей працює дуже добре. Це створює належну розмітку для піднесеного тексту, а також може закривати шматки. Він також доступний в CLI як npmjs.com/package/js-beautify
Sai

Відповіді:


18

reindentНе завжди працює на фрагменти. Ви можете використовувати Tagплагін (встановити з керування пакетом). Потім просто натисніть ctrl+ shift+ pі введіть tag. Ви побачите варіант Auto-Format tags on document. Виберіть і натисніть Enter. Це зроблять.


1
Як я вже згадував у початковій публікації, плагін Tag зламаний, особливо це стосується обробки вбудованих тегів, серед інших дуже поганих помилок. Автор сказав, що йому потрібно "переписати всю справу". Reindent взагалі не працює для HTML, він не виправляє відступ; він просто вирівнює теги до певного рівня відступу.
користувач110241

ну, Тег працював на мене. Я використав ваш фрагмент HTML. Це працювало бездоганно. І reindent працює для HTML, але за певних умов.
Бібхас

спробуйте використовувати автоформат Tag у цьому фрагменті: <p>foo<a>bar<span>baz<span>qux</span></span></a></p>щоб побачити, що я маю на увазі. Він також псує форматування вступного тегу HTML, загорнутого в умовні коментарі IE, що є частиною HTML5 Boilerplate (та коментарів загалом). Спробуйте скористатися вбудованим у Line > Reindentцей фрагмент: jsfiddle.net/y8xXj, щоб побачити, як він виходить з ладу.
користувач110241

FYI - Просто спробував у Sublime Text 3 з фрагментом HTML, і він справді працює!
Стівен

2
Те саме питання. У минулому я використовував незліченну кількість редакторів, Coda, Sublime, Espresso, Chocolat, TextMate ... але жоден з них не зміг належним чином форматувати текст належним чином, як Dreamweaver's Apply Source Formatting. До якого люди просто пропонують Tidy чи якийсь інший плагін, який ніколи не працює як Dreamweaver. Я радий, що хтось із «зоопарків» бачив це питання. Прикро, що досі немає рішення. У Sublime Text 3, як Zooted Noted навіть з тегом, він не працює належним чином (як у вищенаведеному прикладі). А рідна функція Reindent - нікчемна.
cchiera

6

Виберіть Все -> Меню редагування -> Рядок -> Повторне завершення . Ви можете встановити комбінацію ярликів для одного використання.

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


1
Як я вже згадував у питанні, це не працює. Спробуйте його на першому фрагменті, який я надав: <section><article><h1></h1><p></p></article> </section>
user110241

Працює для мене. Синтаксис встановлено на HTML?
Мануель Арвед Шмідт

2
Не працює для мене.
Дерек 朕 會 功夫

Так, це дуже добре справляється, але врешті-решт почав випадати, у моєму випадку <div>відкриваючи теги.
ruffin

0

Щоб функція Reindent працювала, вам потрібно зняти прапорець для параметра «Відступ за допомогою пробілів»:

Перегляд >> Відступ >> Відступ з використанням пробілів

Після того, як цю опцію буде знято, ви можете вибрати текст та Reindent:

Редагувати >> Рядок >> Reindent

Це буде працювати як для синтаксису HTML, так і для XML. Не тестували його на будь-яких інших.


Я насправді вже працював із цим неперевіреним. Команда, яку ви згадали, абсолютно нічого не робить для цього фрагмента в ST3:<html><head></head><body><div><p>foobar<span>baz</span></p></div></body></html>
user110241
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.