Как я могу привести в порядок отступ HTML-файла в VI?


Как я могу исправить отступ его огромных html-файлов, которые были все перепутались?

я попробовал обычный команда "gg=G", который я использую, чтобы исправить отступы файлов кода. Однако, похоже, он не работал правильно на HTML-файлах. Он просто удалил все форматирование.

Я также попытался установить :filetype = xml, чтобы увидеть, если обманом заставить его думать, что это XML-файл поможет, но он все еще не сделал этого.

10 110

10 ответов:

С 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 символов. Я обработал большой 29MB XML-файл, и это заняло 5 или 6 считанные секунды. Я предполагаю, что для HTML-файла команда должна быть:

:!tidy -mi -html -wrap 0 %

надеюсь, что это может помочь.

как tylerl объясняет выше, установите следующее:

:filetype indent on
:set filetype=html
:set smartindent

это мое решение, которое отлично работает для открытия "уродливого" HTML с хорошим интервалом:

vim fileIn.html -c "set sw=2 | %s/>/>\r/ | execute 'normal gg=G' | set nohlsearch | g/^\s*$/d"

The sw команда, потому что мое значение по умолчанию-4, что слишком высоко для HTML.

следующая часть добавляет новую строку (Vim думает, что это возврат каретки, вздох) после каждого элемента (>)

затем повторно отступить весь файл с =

тогда выключи свет > (так как у меня set hlsearch в моем vimrc)

затем удалите все пустые / пробелы - только строки (см. здесь для большего, также это двойной экранированный, потому что он находится в оболочке)

вы даже можете добавить | wq! fileOut.html до конца, если вы вообще не хотите вводить Vim, но просто очистите файл.

Я использую этот скрипт: https://github.com/maksimr/vim-jsbeautify

в приведенной выше ссылке у вас есть вся информация:

  1. установить
  2. настроить (копировать из первого примера)
  3. выполнить :call HtmlBeautify()

делает работу красиво!

вы пробовали использовать скрипт отступа HTML на сайте Vim?

вот тяжеловесное решение, которое заставляет вас отступать, а также всю красивую печать HTML, о которой вы не обязательно хотите заботиться во время редактирования.

скачать порядок. Убедитесь, что вы добавили двоичный файл в свой путь, чтобы вы могли вызвать его из любого места.

затем создайте файл конфигурации, описывающий ваш любимый HTML-вкус. Документация не очень подходит для аккуратного, но вот обзор и список все варианты. Вот мой конфигурационный файл:

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, также в ftplugin:

map <leader>tidy :%! tidy -config ~/vimfiles/ftplugin/tidyrc_html.txt <CR>

чтобы использовать его, просто откройте HTML-файл, и типа /tidy. (Это / - это <leader> ключ.)

вот так! Не быстрое решение, во всяком случае, но теперь вы немного лучше подготовлены для редактирования этих огромных, перепутанных HTML файлы.

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

я попробовал обычную команду "gg=G", которую я использую для исправления отступов файлов кода. Однако, похоже, он не работал правильно на HTML-файлах. Он просто удалил все форматирование.

если автоформат/отступ vim gg=G Кажется, что он "сломан" (например, левый отступ каждой строки), скорее всего, плагин отступа не включен/не загружен. Он должен действительно дать сообщение об ошибке вместо того, чтобы просто делать плохие отступы, иначе пользователи просто думают, что функция автоформата / отступа ужасна, когда она на самом деле довольно хороша.

чтобы проверить, включен ли плагин отступа/загружен, запустите :scriptnames. Смотрите, если .../indent/html.vim в списке. Если нет, то это означает, что плагин не загружен. В этом случае, добавьте эту строку в ~/.vimrc:

filetype plugin indent on

теперь, если вы откроете файл и запустите :scriptnames, вы должны увидеть .../indent/html.vim. Тогда беги gg=G, который должен сделать правильный автоформат/отступ сейчас. (Хотя он не будет добавлять новые строки, так что если все html код находится на одной строке, он не будет отступ).

Примечание: Если вы используете :filetype plugin indent on в командной строке vim вместо ~/.vimrc, вы должны повторно открыть файл :e.

кроме того, вам не нужно беспокоиться о autoindent и smartindent настройки, они не относятся к этому.