Как мне привести в порядок отступ HTML-файла в VI?
-
03-07-2019 - |
Вопрос
Как мне исправить отступы в его огромных html-файлах, которые были полностью перепутаны?
Я попробовал все как обычно команда "gg=G", который я использую для исправления отступов в файлах кода.Однако, похоже, это неправильно работало с HTML-файлами.Он просто удалил все форматирование.
Я также попробовал установить :filetype = xml
, чтобы посмотреть, поможет ли обман, заставив его думать, что это XML-файл, но он все равно этого не сделал.
Решение
С filetype indent on
внутри моего .vimrc
Vim довольно хорошо вставляет HTML-файлы.
Простой пример с shiftwidth
2:
<html>
<body>
<p>
text
</p>
</body>
</html>
Другие советы
Есть несколько вещей, которые все должны быть на месте. Просто чтобы суммировать их все в одном месте:
Установите следующую опцию:
:filetype indent on
:set filetype=html # abbrev - :set ft=html
:set smartindent # abbrev - :set si
Затем переместите курсор в начало файла и сделайте отступ до конца: gg
=G
Или выберите нужный текст для отступа и нажмите = , чтобы сделать отступ.
Основная проблема с использованием интеллектуального отступа заключается в том, что если XML (или HTML) находится на одной строке, поскольку он может в конечном итоге вернуться из запроса curl, то gg=G
не сработает. Вместо этого я только что испытал хороший отступ, используя tidy, напрямую вызванный из VI:
:!tidy -mi -xml -wrap 0 %
Это, в основном, говорит VI, что нужно вызывать tidy для очистки XML-файла, а не для переноса строк, чтобы они помещались по умолчанию в строки шириной 68 символов. Я обработал большой 29 МБ XML-файл, и это заняло 5 или 6 секунд. Я предполагаю, что для файла HTML команда должна быть такой:
:!tidy -mi -html -wrap 0 %
Как уже упоминалось в комментариях, tidy
- это базовый инструмент, который вы можете найти во многих базовых системах Linux / MacOS. Вот страница проекта, если вы хотите, чтобы она у вас была, но не делайте этого: HTML Tidy . р>
Надеюсь, это поможет.
Как объяснил Тайлерл, установите следующее:
:filetype indent on
:set filetype=html
:set smartindent
Однако!
Обратите внимание, что в vim 7.4 html-теги html
, head
, body
и некоторые другие по умолчанию не имеют отступ. Это имеет смысл, поскольку почти весь контент в html-файле попадает под эти теги. Если вы действительно хотите, вы можете получить эти теги с отступом, например, так:
:let g:html_indent_inctags = "html,body,head,tbody"
Это мое решение, которое отлично работает для открытия " ugly " HTML с хорошим разнесением:
vim fileIn.html -c "set sw=2 | %s/>/>\r/ | execute 'normal gg=G' | set nohlsearch | g/^\\s*\$/d"
Команда sw
вызвана тем, что по умолчанию установлено значение 4, что слишком высоко для HTML.
Следующая часть добавляет символ новой строки (Vim считает, что это возврат каретки, вздох) после каждого элемента (>
)
Затем заново сделайте отступ всего файла с помощью =
Тогда не выделяйте set hlsearch
(так как у меня есть | wq! fileOut.html
в моем vimrc)
Затем удалите все пустые строки / пробелы (см. здесь для получения дополнительной информации, также это дважды экранирован, потому что находится в оболочке)
Вы даже можете добавить <=> в конец, если вообще не хотите заходить в Vim, а просто очистите файл.
Я использую этот скрипт: https://github.com/maksimr/vim-jsbeautify
В приведенной выше ссылке у вас есть вся информация:
<Ол>:call HtmlBeautify()
Делает работу красиво!
Вы пробовали использовать скрипт HTML-отступа на Vim-сайте?
Вот мощное решение, которое дает вам отступ, а также красивую HTML-печать, о которой вам не обязательно беспокоиться во время редактирования.
Сначала загрузите Tidy . Убедитесь, что вы добавили двоичный файл в свой путь, чтобы вы могли вызывать его из любого места.
Затем создайте файл конфигурации, описывающий ваш любимый HTML-код. Документация не очень хороша для Tidy, но вот обзор и список все параметры . Вот мой конфигурационный файл:
bare: yes
break-before-br: no
clean: yes
drop-proprietary-attributes: yes
fix-uri: yes
indent-spaces: 4
indent: yes
logical-emphasis: yes
markup: yes
output-xhtml: yes
quiet: yes
quote-marks: yes
replace-color: yes
tab-size: 4
uppercase-tags: no
vertical-space: yes
word-2000: yes
wrap: 0
Сохраните это как tidyrc_html.txt
в своей папке ftplugin
(в папке vimfiles).
Еще один файл: добавьте следующую строку (или создайте) html.vim
, также в /tidy
:
map <leader>tidy :%! tidy -config ~/vimfiles/ftplugin/tidyrc_html.txt <CR>
Чтобы использовать его, просто откройте файл HTML и введите /
. (Это <leader>
клавиша <=>.)
Вот, пожалуйста! В любом случае, это не быстрое решение, но теперь вы немного лучше подготовлены для редактирования этих огромных, испорченных HTML-файлов.
Вы можете интегрировать как аккуратный , так и html-beautify автоматически путем установки плагина vim -autoformat . После этого вы можете выполнить любой установленный модуль форматирования одним нажатием клавиши.
Я попробовал обычное " gg = G " Команда, которую я использую для исправления отступа файлов кода. Тем не менее, это не похоже на работу с файлами HTML. Он просто удалил все форматирование.
Если автоформат или отступ
Чтобы проверить, включен ли плагин для отступа, запустите gg=G
. Посмотрите, есть ли :scriptnames
в списке. Если нет, то это означает, что плагин не загружен. В этом случае добавьте эту строку в .../indent/html.vim
:
filetype plugin indent on
Теперь, если вы откроете файл и запустите ~/.vimrc
, вы должны увидеть :filetype plugin indent on
. Затем запустите :e
, что должно сделать правильный автоформат / отступ сейчас. (Хотя он не добавляет новые строки, поэтому, если весь HTML-код находится в одной строке, он не будет иметь отступ).
Примечание: если вы запускаете autoindent
в командной строке vim вместо smartindent
, вы должны заново открыть файл <=>.
Кроме того, вам не нужно беспокоиться о настройках <=> и <=>, они не имеют к этому отношения.