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

StackOverflow https://stackoverflow.com/questions/815548

  •  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. Он просто удалил все форматирование.

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

    Чтобы проверить, включен ли плагин для отступа, запустите gg=G. Посмотрите, есть ли :scriptnames в списке. Если нет, то это означает, что плагин не загружен. В этом случае добавьте эту строку в .../indent/html.vim:

    filetype plugin indent on
    

    Теперь, если вы откроете файл и запустите ~/.vimrc, вы должны увидеть :filetype plugin indent on. Затем запустите :e, что должно сделать правильный автоформат / отступ сейчас. (Хотя он не добавляет новые строки, поэтому, если весь HTML-код находится в одной строке, он не будет иметь отступ).

    Примечание: если вы запускаете autoindent в командной строке vim вместо smartindent, вы должны заново открыть файл <=>.

    Кроме того, вам не нужно беспокоиться о настройках <=> и <=>, они не имеют к этому отношения.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top