Есть ли в HTML функция авто-отступа или плагин для Sublime Text (он же prettify / beautify / format)?

44193
mehas

Например, что-то изменить:

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

чтобы:

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

... это работает на полных страницах и фрагментах.

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

(Notepad ++ имел автоотступ, в 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> 
23
В чем вопрос? Из вашего поста не понятно, в чем вопрос. Brad Patton 11 лет назад 0
Отредактированное название должно быть вопросительным. Я пытаюсь найти способ автоматического отступа HTML в Sublime Text. mehas 11 лет назад 0
Также см. [Форматирование HTML-кода с использованием Sublime Text 2] (http://stackoverflow.com/questions/8839753/formatting-html-code-using-sublime-text-2). Karan 11 лет назад 0
Спасибо, я пробовал каждое решение в этой теме, ни одно из них не работает. Я перечислил причины, почему многие из них не работают в этой теме. mehas 11 лет назад 0
Я думаю, что это лучшее рабочее решение: http://jsbeautifier.org/ У меня было такое же требование форматировать несколько встроенных тегов. Этот работает очень хорошо. Он также создает правильную разметку для возвышенного текста, который может закрывать фрагменты. Это также доступно на CLI как https://www.npmjs.com/package/js-beautify Sai krishna Deep 7 лет назад 0

3 ответа на вопрос

18
Bibhas

reindentНе всегда работает на фрагменты. Вы можете использовать Tagплагин (установить из пакета управления). Затем просто нажмите ctrl+ shift+ pи введите tag. Вы увидите вариант Auto-Format tags on document. Выберите и нажмите Enter. Это сделает это.

Как я упоминал в оригинальном посте, плагин Tag сломан, особенно в его обработке встроенных тегов, среди других очень плохих ошибок. Автор сказал, что ему нужно «переписать все это». Переопределение вообще не работает для HTML, оно не исправляет отступы; он просто выравнивает теги до определенного уровня отступа. mehas 11 лет назад 1
ну, Тэг работал на меня. Я использовал ваш HTML-фрагмент. Работало без нареканий. И Reindent работает для HTML, но при определенных условиях. Bibhas 11 лет назад 0
попробуйте использовать автоформат Tag в этом фрагменте:

Foo бар Баз QUX

чтобы понять, что я имею в виду Это также портит форматирование открывающего тега HTML, обернутого в условные комментарии IE, который является частью HTML5 Boilerplate (и комментариев в целом). Попробуйте использовать встроенный `Line> Reindent` в этом фрагменте: http://jsfiddle.net/y8xXj/, чтобы увидеть, как это не работает. mehas 11 лет назад 0
К вашему сведению - только что попробовал в Sublime Text 3 с фрагментом HTML, и это действительно работает! Steven 10 лет назад 0
Пробовал что? Ни `Edit> Line> Reindent`, ни плагин Tag не работали для меня в этом фрагменте в ST3:`

Foo бар Баз QUX

` mehas 10 лет назад 0
Та же проблема. В прошлом я использовал бесчисленные редакторы: Coda, Sublime, Espresso, Chocolat, TextMate ... но ни один из них не смог безошибочно отформатировать текст, как в Dreamweaver's Apply Source Formatting. На что люди просто предлагают Tidy или какой-то другой плагин, который никогда не работает как Dreamweaver. Я рад, что кто-то "Zooted" видит эту проблему. К сожалению, до сих пор нет решения. В Sublime Text 3, отмеченном как Zooted, даже с Tag он не работает должным образом (как в приведенном выше примере). А родная функция Reindent довольно бесполезна. cchiera 10 лет назад 2
6
Jasim Mahmood

Select All -> Edit menu -> Line -> Reindend will do. You could set a shortcut combination for the same use.

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

Как я уже упоминал в этом вопросе, это * не * работает. Попробуйте это на самом первом фрагменте, который я предоставил:

mehas 9 лет назад 1
Работает для меня. Синтаксис установлен в HTML? Manuel Arwed Schmidt 8 лет назад 0
Не работает для меня Derek 朕會功夫 8 лет назад 2
Да, он неплохо справляется, но в моем случае, в конце концов, начал падать
`открывающие теги.
ruffin 7 лет назад 0
0
Sidz

In order for the Reindent feature to work, you have to uncheck the option for "Indent Using Spaces":

View >> Indentation >> Indent Using Spaces

Once this option has been unchecked, you can select your text and Reindent:

Edit >> Line >> Reindent

This will work for HTML syntax as well as XML. Not tested it on any others.

Я уже работал с этим без контроля. Упомянутая вами команда абсолютно ничего не делает с этим фрагментом в ST3: `

Foobar Baz

` mehas 7 лет назад 0

Похожие вопросы