Формат и отступ HTML в Vim
В настоящее время у меня есть огромный HTML файл, который не имеет разрывов строк и просто появляется в одной строке.
Я хочу отформатировать его в vim (в частности, в macvim). Я пробовал следующие параметры, но ни один из них не работал у меня.
- Выбрал текст и нажал =. Это будет только автоматизировать код. Но так как весь код присутствует в одной строке, он ничего не делает
- Я пробовал этот плагин http://www.vim.org/scripts/script.php?script_id=3613 Этот вид работ, но будет вставляться в строки только для текущего тега. Я хочу, чтобы весь файл был отформатирован
Есть ли способ сделать это, используя плагин или иначе?
Спасибо!
Ответы
Ответ 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.
После этого вы можете выполнить любой форматировщик с одним нажатием клавиши.
Ответ 3
Лучше использовать утилиту tidy, как описано в этом ответе.
Хорошие инструменты уже написаны для этой работы