Подтвердить что ты не робот

Формат и отступ HTML в Vim

В настоящее время у меня есть огромный HTML файл, который не имеет разрывов строк и просто появляется в одной строке.

Я хочу отформатировать его в vim (в частности, в macvim). Я пробовал следующие параметры, но ни один из них не работал у меня.

  • Выбрал текст и нажал =. Это будет только автоматизировать код. Но так как весь код присутствует в одной строке, он ничего не делает
  • Я пробовал этот плагин http://www.vim.org/scripts/script.php?script_id=3613 Этот вид работ, но будет вставляться в строки только для текущего тега. Я хочу, чтобы весь файл был отформатирован

Есть ли способ сделать это, используя плагин или иначе?

Спасибо!

4b9b3361

Ответ 1

Один из способов начать это - разделить все теги на свои собственные строки.

:s/<[^>]*>/\r&\r/g
:g/^$/d

Если у вас есть плавающие символы < или > (например, недопустимые HTML, операторы сравнения JavaScript, часть выбора прямого прямого селектора CSS), это не сработает должным образом, и вы можете переключиться на что-то вроде выполнения конечных тегов - <\/[^>]*>. Во всяком случае, он обеспечивает надежный запуск.

Демонстрация:

С идеализированным документом, подобным этому,

<!DOCTYPE html><html><head><title>hello</title></head><body>world</body></html>

Это дает следующее:

<!DOCTYPE html>
<html>
<head>
<title>
hello
</title>
</head>
<body>
world
</body>
</html>

Затем = создаст то, что вы хотите:

<!DOCTYPE html>
<html>
    <head>
        <title>
            hello
        </title>
    </head>
    <body>
        world
    </body>
</html>

Ответ 2

Для лучшего результата вы должны использовать специализированные программы внешнего формата.

Вы можете интегрировать tidy и html-beautify автоматически, установив плагин vim-autoformat. После этого вы можете выполнить любой форматировщик с одним нажатием клавиши.